6
私はRSpecの2.0.0でreject_if一部をテストするユーザモデルテスト:anafでreject_if
class User < ActiveRecord::Base
has_many :languages, :dependent => :destroy
accepts_nested_attributes_for :languages, :reject_if => lambda { |l| l[:name].blank? }
end
を持っています。現在、私は、私がテストに非常に新しいですが、その
it "should not save language without name by accepts_nested_attributes" do
lambda {
@user.update_attributes!("languages_attributes"=>{"0"=>{}})
}.should_not change(Language, :count)
end
it "should save language with name by accepts_nested_attributes" do
lambda {
@user.update_attributes!("languages_attributes"=>{"0"=>{"name"=>"lang_name"}})
}.should change(Language, :count).by(1)
end
のための2つの簡単なテストケースを持っており、それは本当に奇妙な私見を探します。 これがreject_ifをテストする正しい方法だと思いますか?そしてそれを行うためのより良い方法がありますか?それはname
は空白になって、その後、true
なら
anaf_for_languages = User.nested_attributes_options[:languages]
anaf_for_languages[:reject_if].call({ "name" => "" }).should be_true
を:私はあなたがこれを行うにはreject_if
その後、最善の方法をテストするために探していることがわかり
あなたのアプローチは明確で、私はそれをupvotedしました。あなたの例は、ビューとフォームに依存せず、良いと思う=>より多くの孤立。しかし、ユーザーが言語名フィールドを空白にしてフォームを送信したときに、言語レコードが保存されていないかどうかをチェックすることが正しい方法であるかどうかはわかりません。たぶんこれは別の質問ですが、単体テストのときにできるだけ多くのものから分離するか、実際のアプリケーションワークフローをシミュレートしようとすると良い戦略はありますか?答えが後者の場合、私の例は有効で正しいですか? –
@タダス:元の質問には、意見や形について何もなかったので、私はその点で自分の能力の中で最高のものに答えました。このビュー/フォームをテストする場合は、フルスタック統合テストのためにCucumberやSteakなどをお勧めします。 –