ruby-on-rails – rspec预计不会达到我的预期

ruby-on-rails – rspec预计不会达到我的预期,第1张

概述所以我有两个规格我认为正在测试相同的东西,但一个失败而另一个失败.我正在开发一个具有重复计划的应用程序.如果用户创建了一个重复出现的行程,它将继续为指定的每一天创建新的行程.这是第一个失败的测试: it "makes future trips" do expect{FactoryGirl.create(:recurring_transportation_trip)}.to change(Tri 所以我有两个规格我认为正在测试相同的东西,但一个失败而另一个失败.我正在开发一个具有重复计划的应用程序.如果用户创建了一个重复出现的行程,它将继续为指定的每一天创建新的行程.这是第一个失败的测试:

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预计不会达到我的预期所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1268461.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存