gpt4 book ai didi

ruby-on-rails - assert_difference 与字符串?

转载 作者:行者123 更新时间:2023-11-28 20:29:21 25 4
gpt4 key购买 nike

这是一个标准的insert_difference 更新测试:

assert_difference 'Article.count' do
post :create, article: {...}
end

是否可以在测试字符串时执行与insert_difference 等价的操作?

assert_difference 'Article.name' do
post :create, article: {...}
end
# TypeError: no implicit conversion of Fixnum into String

最佳答案

这样做的技术含量低的方法:

assert_equal 'before', Article.name

post :create, article: { ... }

assert_equal 'after', Article.name

如果您愿意,您可以编写自己的断言方法来将其包装起来,但除非在您的测试中普遍使用它,否则我会避免这样做,否则它会混淆实际发生的事情。

assert_difference 旨在用于返回整数值的方法,仅此而已,但您可以将该设计用作您自己的基于字符串的设计的基础。

现在我在这里发现奇怪的是 Article.name 是一个类方法,所以如果您希望更改特定实例,则需要这样做:

article = articles(:example)

assert_equal 'before', article.name

post :create, article: { ... }

article.reload

assert_equal 'after', article.name

这就是我在许多试图断言记录实际上已更改的测试中经常看到的情况。

关于ruby-on-rails - assert_difference 与字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35779316/

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