Rspec 希望收到带有属性的消息并忽略其他消息
Rspec expect to recieve message with attributes and ignore others
我很长时间都在尝试编写规范。
我需要测试这个:
expect(Foo).to receive(:bar).with(some_args)
一切都会正常,除非 Foo
只收到 bar
一次。但它肯定会收到 bar
几次,因此更高的字符串会因
而失败
#<Foo (class)> received :bar with unexpected arguments
在那些电话上。
我如何测试 Foo
接收 bar
以及我需要的确切参数并忽略其他情况?
使用 allow(Foo).to receive(:bar).and_call_original
怎么样?
例如,这些测试将成功通过:
class Foo
def boo(b)
b
end
end
describe Foo do
let(:a) { Foo.new }
before do
allow(a).to receive(:boo).and_call_original
end
it do
expect(a).to receive(:boo).with(2)
expect(a.boo(1)).to eq 1
expect(a.boo(2)).to eq 2
expect(a.boo(3)).to eq 3
end
end
如果将 expect(a).to receive(:boo).with(4)
添加到块中,测试将失败。看起来正是您要找的,对吧?
我很长时间都在尝试编写规范。
我需要测试这个:
expect(Foo).to receive(:bar).with(some_args)
一切都会正常,除非 Foo
只收到 bar
一次。但它肯定会收到 bar
几次,因此更高的字符串会因
#<Foo (class)> received :bar with unexpected arguments
在那些电话上。
我如何测试 Foo
接收 bar
以及我需要的确切参数并忽略其他情况?
使用 allow(Foo).to receive(:bar).and_call_original
怎么样?
例如,这些测试将成功通过:
class Foo
def boo(b)
b
end
end
describe Foo do
let(:a) { Foo.new }
before do
allow(a).to receive(:boo).and_call_original
end
it do
expect(a).to receive(:boo).with(2)
expect(a.boo(1)).to eq 1
expect(a.boo(2)).to eq 2
expect(a.boo(3)).to eq 3
end
end
如果将 expect(a).to receive(:boo).with(4)
添加到块中,测试将失败。看起来正是您要找的,对吧?