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_savecondition 有问题。

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 条件问题的主要内容,如果未能解决你的问题,请参考以下文章