期望至少收到一次特定论点

时间:2015-06-26 07:45:05

标签: rspec

我有一个Logger类。我想在函数内部测试,Logger将收到log调用foo的调用。

expect(Logger).to receive(:log).with("foo")
Bar.foo()

但在此期间,某些模型回调还会调用Logger.log("euu")Logger.log("arr")Logger.log("hmm")和其他许多人。 Rspec似乎失败,因为首先使用其他一些参数调用log

我只担心log("foo")被召唤一次。有没有办法进行这种测试?

2 个答案:

答案 0 :(得分:14)

方法是允许调用log,执行您的操作,然后检查是否已使用预期参数调用log,如下所示:

allow(Logger).to receive(:log)
Bar.foo
expect(Logger).to have_received(:log).with("foo")

RSpec称这种模式为Spies

答案 1 :(得分:0)

您可以使用Receive Counts

expect(Logger).to receive(:log).with('foo').at_least(:once)