我可以向 Rails Mocha 中的存根添加自定义副作用吗?
Can I add custom side-effects to a stub in Rails Mocha?
我的团队使用 Mocha gem 在 Rails 中存根。我了解如何使用 stubs
存根方法使其不执行任何操作,或 returns 特定值,但是有没有办法存根它以便在调用时运行特定代码行?
我正在寻找这样的东西:
object.stubs(:method).runs(p 'Hello world!')
这个存在吗?我愿意使用额外的 gem 或实施人们想出的任何方法。
看来 .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 可能不会介意。
我的团队使用 Mocha gem 在 Rails 中存根。我了解如何使用 stubs
存根方法使其不执行任何操作,或 returns 特定值,但是有没有办法存根它以便在调用时运行特定代码行?
我正在寻找这样的东西:
object.stubs(:method).runs(p 'Hello world!')
这个存在吗?我愿意使用额外的 gem 或实施人们想出的任何方法。
看来 .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 可能不会介意。