是否可以检查传递给方法调用参数的参数是否满足某些约束。我想做点什么
my_double = double("MyObject")
my_double.should_receive(:mocked_method).with{ <something that has an attribute called name and value "john"> }
提前多多感谢。
编辑:我会尝试澄清一下我想要完成的事情
我想要的是检查模拟的给定方法是否被调用传递满足某些条件的对象
答案 0 :(得分:6)
记录。我想要完成的事情可以用
完成 @test_double.should_receive(:send_mail) do |mail|
mail.to.should eq(["john@aol.com"])
mail.body.decoded.should include "Error"
end
代码应使用满足块中指定条件的参数调用给定对象的方法send_mail。
答案 1 :(得分:1)
只是要添加,如果您的方法接受多个参数,您可以在块中执行以下操作:
allow_any_instance_of(MyClass).to receive(:my_method) do |*args|
expect(args[0]).to include "something"
expect(args[1]).to match(/something_else/)
# etc
end
答案 2 :(得分:0)
在我看来,它应该是一个单独的测试:
context "after being passed to my_double" do
before { my_double( XXX ) }
subject { XXX }
it { should respond_to :attribute }
describe :attribute do
subject { XXX.attribute }
it { should == 5 }
end
end