現在、Ruby on Rails チュートリアルのソースコードをgithubからダウンロードして、勉強のために閲覧しています。 Twitterのようにつぶやいたことを表示するアプリです。
テストに使うユーティリティファイルについて質問があります。下記のようにテスト用にsing_inの関数が作られていますが、app/helpersにも既に同名のクラスがあります。
ruby
1#spec/support/utilities.rb 2def sign_in(user, options={}) 3 if options[:no_capybara] 4 # Sign in when not using Capybara as well. 5 remember_token = User.new_remember_token 6 cookies[:remember_token] = remember_token 7 user.update_attribute(:remember_token, User.digest(remember_token)) 8 else 9 visit signin_path 10 fill_in "Email", with: user.email 11 fill_in "Password", with: user.password 12 click_button "Sign in" 13 end 14end 15#...
ruby
1#app/helpers/sessions_helper.rb 2module SessionsHelper 3 4 def sign_in(user) 5 remember_token = User.new_remember_token 6 cookies.permanent[:remember_token] = remember_token 7 user.update_attribute(:remember_token, User.digest(remember_token)) 8 self.current_user = user 9 end 10 11 def signed_in? 12 !current_user.nil? 13 end 14#...
テスト用のユーティリティをわざわざ作らずに、SessionsHelperにあるsing_inを使うのは良くないのでしょうか?テスト用のはcapybaraを使わない時のオプションを用意してありますが、今回はcapybaraを使う前提でtutorialが進められています。これは今後capybaraが廃止された場合に備えてかなと思ったのですが、それだと他のテストコードにも影響があるからここだけ対策をしてもあまり意味が無いように思えました。
このようにわざわざ同じ目的を達成できる関数をアプリ側とテストのヘルパー側に用意する必要性がわかりません。どなたか教えて頂けないでしょうか?テストのヘルパー側にも同じ関数を用意したら、それもテストする必要性が出てくると思います。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/08/19 07:26
退会済みユーザー
2015/08/19 07:36
2015/08/19 07:46