我可以在Rails Mocha中为Stub添加自定义副作用吗?

问题描述 投票:3回答:1

我的团队使用Mocha gem在Rails中进行存根。我理解如何使用stubs来存储一个方法,使得它什么都不做,或者返回一个特定的值,但有没有办法将它存根,以便在调用时运行某一行代码?

我在寻找这样的东西:

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

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

ruby-on-rails mocha stub
1个回答
5
投票

似乎.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

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

© www.soinside.com 2019 - 2024. All rights reserved.