gpt4 book ai didi

ruby-on-rails - assert_difference 期望计数不正确,结果失败

转载 作者:行者123 更新时间:2023-12-05 08:34:50 24 4
gpt4 key购买 nike

A Book has_many ReviewsReview belongs_to Book。我正在使用 rails 4.0 和 ruby​​ 2.0.0p247

我正在运行测试如下:

test "DELETE destroy should decrement review count by 1" do

book = Book.create({
:isbn=>"1234567890",
:title=>"Dummies Guide to Rails",
:author=>"KP",
:description=>"lorem ipsum"
})

# assert_not_nil Book.find_by_isbn('1234567890')

review = Review.create!({
:book_id => book.id,
:name => "KP",
:email => "KP@KP.com",
:description => "Good book.",
# :book => book
})

assert_difference 'Review.count', 1 , "a review should be deleted" do
puts Review.count # => 3
delete :destroy, :book_id => book.id, :id => review.id
assert_response :redirect
puts Review.count # => 2
end
# puts Review.count
assert_nil Review.find_by_id(review.id)
end

如您所见,我在删除与一本书相关的评论之前和之后打印了计数,它减少了 1。但是,断言期望并接收到不正确的计数,将其显示为错误:

 1) Failure:
ReviewsControllerTest#test_DELETE_destroy_should_decrement_review_count_by_1 [test/controllers/reviews_controller_test.rb:56]:
a review should be deleted.
"Review.count" didn't change by 1.
Expected: 4
Actual: 2

我已经删除了数据库并从空白开始。我有两个问题:

  1. 我只创建了与一本书相关的评论。为什么 Review.count 打印的是 3 和 2 而不是 1 和 0?

  2. 为什么断言期望 4,却收到 2?

谢谢。

最佳答案

此行表示您期望加一(1 或 +1)的差值。

assert_difference 'Review.count', 1 , "a review should be deleted"

但实际上你想要负一(-1)的差异,所以你应该写

assert_difference 'Review.count', -1 , "a review should be deleted"

更多指南请访问assert_difference

关于ruby-on-rails - assert_difference 期望计数不正确,结果失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18869161/

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