加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-17 02:04:07 所属栏目:百科 来源:网络整理
导读:所以我有两个规格我认为正在测试相同的东西,但一个失败而另一个失败.我正在开发一个具有重复计划的应用程序.如果用户创建了一个重复出现的行程,它将继续为指定的每一天创建新的行程.这是第一个失败的测试: it "makes future trips" do expect{FactoryGirl.c
所以我有两个规格我认为正在测试相同的东西,但一个失败而另一个失败.我正在开发一个具有重复计划的应用程序.如果用户创建了一个重复出现的行程,它将继续为指定的每一天创建新的行程.这是第一个失败的测试:

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 ==计数4
只是一个计算结果为false的表达式.

你要做的是:

Trip.count.should == count + 4

无论如何,第一次测试是你应该信任的;它告诉您,您需要调查的应用程序代码中存在错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读