假设我有这门课
class Foo
def bar(param1=nil, param2=nil, param3=nil)
:bar1 if param1
:bar2 if param2
:bar3 if param3
end
end
我可以使用以下方法存根整条方法:
Foo.any_instance.expects(:bar).at_least_once.returns(false)
但是,如果我只想在 bar 方法的 param1 为真时存根,我找不到办法:
我还查看了 with 和 has_entry,它似乎只适用于单个参数。
我期待这样的一些功能。
Foo.any_instance.expects(:bar).with('true',:any,:any).returns(:baz1)
Foo.any_instance.expects(:bar).with(any,'some',:any).returns(:baz2)
谢谢
..................................................... . 编辑以下内容..........................
谢谢,纳什
不熟悉 rspec,所以我尝试使用 any_instance 进行单元测试,它似乎有效
require 'test/unit'
require 'mocha'
class FooTest < Test::Unit::TestCase
def test_bar_stub
foo = Foo.new
p foo.bar(1)
Foo.any_instance.stubs(:bar).with { |*args| args[0]=='hee' }.returns('hee')
Foo.any_instance.stubs(:bar).with { |*args| args[1]=='haa' }.returns('haa')
Foo.any_instance.stubs(:bar).with { |*args| args[2]!=nil }.returns('heehaa')
foo = Foo.new
p foo.bar('hee')
p foo.bar('sth', 'haa')
p foo.bar('sth', 'haa', 'sth')
end
end