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 + 4end
显示正确的功能.
第一个测试肯定更具可读性,但实际上并没有测试我的想法.谁能提供和解释为什么?
– – – -编辑 – – – –
按要求添加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 endend
并为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] endend
——- ——- EDIT2
结果是Trip.count == count 4实际上没有断言任何东西,测试Trip.count.should == count 4确实失败了.感谢@BenediktDeicke指出这一点.
——- ——- EDIT3
最后,我的应用程序代码出错,我应该从一开始就信任原始测试.感谢大家一起来看看. @boulder和@BenediktDeicke感谢指出edit2中提到的缺乏断言.
解决方法 你的第二个测试实际上没有测试任何东西,因为它没有定义任何期望.这条线
Trip.count ==计数4
只是一个计算结果为false的表达式.
你要做的是:
Trip.count.should == count + 4
无论如何,第一次测试是你应该信任的;它告诉您,您需要调查的应用程序代码中存在错误.
总结以上是内存溢出为你收集整理的ruby-on-rails – rspec预计不会达到我的预期全部内容,希望文章能够帮你解决ruby-on-rails – rspec预计不会达到我的预期所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)