在一行中定义存根/模拟期望/ should_receive?

时间:2012-01-11 18:44:45

标签: ruby-on-rails ruby rspec2 rspec-rails

有人知道如何缩短这一行吗? (RSpec 2)

location = mock
location.should_receive(:build)

例如,您可以定义以下内容:

location = stub
location.stub(build: true)

以上内容与:

相同
location = stub(build :true)

那么,有人看到在模拟调用中指定期望的方法吗?

3 个答案:

答案 0 :(得分:4)

location = mock.tap { |loc| loc.should_receive(:build) }

答案 1 :(得分:1)

看起来很难看,虽然有效:

    (location = mock).should_receive(:build)

答案 2 :(得分:1)

如果您的每个测试都有模拟定义,则可以在文件开头使用 let 来缩短表示法。

let (:location) { double :location }

然后,每当您使用location时,它会自动创建新的模拟对象:

location.should_receive(:build)