说我有这段代码:
Lollercoaster.lmao { 'this is fun' }
...
如何测试该块的评估?换句话说,我想做这样的事情:
expect(Lollercoaster).to have_received(:lmao).with('this is fun')
但这显然不起作用,因为没有任何参数被发送到lmao方法。
文档将此作为示例:
allow(dbl).to receive(:foo) { |&block| block.call(14) }
但是当我尝试这个时,阻止是零......
答案 0 :(得分:1)
原来,has_received不起作用,但正如文档所示,接收确实有效。
expect(Lollercoaster).to receive(:lmao) { |&block| expect(block.call).to eq 'this is fun' }
作品。
答案 1 :(得分:0)
这应该有效:
expect(Lollercoaster).to receive(:lmao).with(key: value).and_return(return_value)
在您的特定示例中,您应该只需要这个(没有.with
):
expect(Lollercoaster).to receive(:lmao).and_return(return_value)