以下是标准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
答案 0 :(得分:2)
这种低技术方式:
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
在我试图断言记录的许多测试中,我倾向于看到的内容实际上已经改变了。