Rspec/Rails中的存根模型保存方法

Spy*_*ros 9 rspec ruby-on-rails

这应该很简单,但我不能让它工作.我想要存根:

@alliance.save
Run Code Online (Sandbox Code Playgroud)

这样它就会返回true.我试过了 :

Alliance.stub(:save).and_return(true)
Run Code Online (Sandbox Code Playgroud)

但它不会起作用.有任何想法吗 ?

Mic*_*ley 17

如果我没有弄错的Alliance.stub(:save)话会影响来电Alliance.save.你想要的@alliance.stub(:save).and_return(true).

Mocha有一个有用的方法any_instance,所以你可以做一些像Alliance.any_instance.stubs(:save).returns(true)(顾名思义)save存在任何实例的方法Alliance.


Den*_*nis 7

使用新的RSpec语法:

allow_any_instance_of(Alliance).to receive(:save).and_return(true)
Run Code Online (Sandbox Code Playgroud)