我可以在 Rails 摩卡 中向存根添加自定义副作用吗?



我的团队使用摩卡宝石在 Rails 中进行存根。 我了解如何用stubs存根方法,使其不执行任何操作或返回特定值,但是有没有办法将其存根,使其在调用时运行某行代码?

我正在寻找这样的东西:

object.stubs(:method).runs(p 'Hello world!')

这存在吗? 我愿意使用额外的宝石,或者实施人们想出的任何方法。

看起来.with()需要一个块,因此您可以使用逻辑来验证方法的参数。这是它带有评论的来源:

#   object = mock()
#   object.expects(:expected_method).with() { |value| value % 4 == 0 }
#   object.expected_method(17)
#   # => verify fails
def with(*expected_parameters, &matching_block)
  @parameters_matcher = ParametersMatcher.new(expected_parameters, &matching_block)
  self
end

Mocha 可能不会介意你在那里调用side_effect(); true而不是验证参数。

最新更新