ruby-on-rails – rspec预计不会达到我的预期
所以我有两个规格我认为正在测试相同的东西,但一个失败而另一个失败.我正在开发一个具有重复计划的应用程序.如果用户创建了一个重复出现的行程,它将继续为指定的每一天创建新的行程.这是第一个失败的测试:
it "makes future trips" do expect{FactoryGirl.create(:recurring_transportation_trip)}.to change(Trip,:count).by(4) end recurring_transportation_trip会创建一个行程,通过after_save回调进行三次未来的行程.此测试失败,错误“计数应该已更改为4,但已更改为1”. 这是另一个通过的测试: it "makes future trips" do count = Trip.count FactoryGirl.create(:recurring_transportation_trip) Trip.count == count + 4 end 显示正确的功能. 第一个测试肯定更具可读性,但实际上并没有测试我的想法.谁能提供和解释为什么? – – – -编辑 – – – – 按要求添加Factory代码: FactoryGirl.define do factory :recurring_transportation_trip,:class => :trip do collection_time "09:00" estimated_duration "60" status "Confirmed" mileage "30" association :collection,:factory => :location association :destination,:factory => :location association :call,:factory => :recurring_call end end 并为recurring_call FactoryGirl.define do factory :recurring_call,:class => "Call" do recurring true recurring_start_date Date.today recurring_end_date Date.today + 1.week recurring_config [1,3,5] end end ——- ——- EDIT2 结果是Trip.count == count 4实际上没有断言任何东西,测试Trip.count.should == count 4确实失败了.感谢@BenediktDeicke指出这一点. ——- ——- EDIT3 最后,我的应用程序代码出错,我应该从一开始就信任原始测试.感谢大家一起来看看. @boulder和@BenediktDeicke感谢指出edit2中提到的缺乏断言. 解决方法
你的第二个测试实际上没有测试任何东西,因为它没有定义任何期望.
这条线 你要做的是: Trip.count.should == count + 4 无论如何,第一次测试是你应该信任的;它告诉您,您需要调查的应用程序代码中存在错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |