Ruby on rails 定义存根/模拟期望/是否应在一行中接收?

Ruby on rails 定义存根/模拟期望/是否应在一行中接收?,ruby-on-rails,ruby,rspec2,rspec-rails,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) 所以,有人看到了在模拟调用中指定期望值的方法吗?看起来很难看,但可以: (location = mock).should_receive(:build)

有人知道把这缩短成一行的方法吗?RSpec 2

location = mock
location.should_receive(:build)
例如,您可以定义以下内容:

location = stub
location.stub(build: true)
以上内容同:

location = stub(build :true)

所以,有人看到了在模拟调用中指定期望值的方法吗?

看起来很难看,但可以:

    (location = mock).should_receive(:build)

看起来很难看,但效果很好:

    (location = mock).should_receive(:build)

location=mock.tap{| loc | loc.should\u receive:build}

location=mock.tap{| loc | loc.should\u receive:build}

如果您的每个测试都有mock定义,您可以通过在文件开头使用let来缩短符号

let (:location) { double :location }
然后,每次使用location时,它都会自动创建新的模拟对象:

location.should_receive(:build)

如果您的每个测试都有模拟定义,您可以通过在文件的开头使用let来缩短符号

let (:location) { double :location }
然后,每次使用location时,它都会自动创建新的模拟对象:

location.should_receive(:build)

有趣的是,我没有想到那种方法。有趣的是,我没有想到那种方法。没错,过去使用过类似的方法,并且在整个上下文中使用相同的模拟时效果很好。据我所知,它应该为每个范围创建新的模拟对象。它可能很方便。对于每个示例,将再次实例化位置。这可能是最好的使用方法,尤其是当您需要在某些示例中而不是在其他示例中设置期望值时。没错,过去使用过类似的方法,并且在您希望在整个上下文中使用相同的模拟时效果很好。据我所知,它应该为每个范围创建新的模拟对象。它可能很方便。对于每个示例,将再次实例化位置。这可能是最好的使用方法,特别是如果你需要在一些例子中设定期望值,而不是在其他例子中设定期望值的话。谢谢你,好先生。如果有其他解决方案,我们会再开放几个小时,但这会让工作完成。喜欢这个。谢谢你,好先生。如果有其他的解决方案,我们会再开放几个小时,但这样就完成了任务。