gpt4 book ai didi

ruby-on-rails - rspec 期望不符合我的期望

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:08 25 4
gpt4 key购买 nike

所以我有两个规范,我认为它们在测试同一件事,但一个失败了,而另一个通过了。我正在开发一个具有重复时间表的应用程序。如果用户创建重复的行程,它将继续并为指定的每一天创建新行程。这是第一个失败的测试:

it "makes future trips" do
expect{FactoryGirl.create(:recurring_transportation_trip)}.to change(Trip, :count).by(4)
end

recurring_transportation_trip 创建一个行程,它将通过 after_save 回调进行 future 的三个行程。此测试失败并显示错误“count should have been changed by 4, but was changed by 1”。

这是另一个通过的测试:

it "makes future trips" do
count = Trip.count
FactoryGirl.create(:recurring_transportation_trip)
Trip.count == count + 4
end

表明存在正确的功能。

第一个测试当然更具可读性,但实际上并没有测试我认为它做了什么。任何人都可以提供并解释原因吗?

--------编辑--------

按要求添加工厂代码:

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

你要做的是:

Trip.count.should == count + 4

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

关于ruby-on-rails - rspec 期望不符合我的期望,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14714734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com