shoulda-callback-matchers after_save 条件问题
Posted
技术标签:
【中文标题】shoulda-callback-matchers after_save 条件问题【英文标题】:shoulda-callback-matchers after_save problem with condition 【发布时间】:2022-01-08 00:17:03 【问题描述】:我正在使用 shoulda-callback-matchers gem 来测试我的回调。
但是我的after_save
和condition
有问题。
model
中的回调:
after_save :update_effort_rate, if: -> saved_change_to_rent?
我在spec
中的测试:
context 'callbacks' do
it is_expected.to callback(:update_effort_rate).after(:save).if :rent_changed?
end
Rspec
错误:
Failure/Error: it is_expected.to callback(:update_effort_rate).after(:save).if :saved_change_to_rent?
expected update_effort_rate to be listed as a callback after save if saved_change_to_rent? evaluates to true, but was not
我不知道我做错了什么。有什么帮助吗?谢谢
【问题讨论】:
【参考方案1】:尝试通过只传入方法名称来更改 if 子句(而不是调用该方法的 lambda):
after_save :update_effort_rate, if: :saved_change_to_rent?
https://guides.rubyonrails.org/active_record_callbacks.html#using-if-and-unless-with-a-symbol
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 非常感谢李 :)以上是关于shoulda-callback-matchers after_save 条件问题的主要内容,如果未能解决你的问题,请参考以下文章