6
讓我們假設我有這個類使用摩卡,有沒有一種方法來存留很多參數?
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)
但是如果我只想存根時,杆法的參數1是真的,我不能找到一個辦法:
我也看着,和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
預期,而不是存根對我來說也能正常工作。 Foo.any_instance.expects(:bar).with {| * args | args [0] =='hee'} .returns('hee') – allenhwkim 2012-03-09 21:08:34