这应该很简单,但我无法让它发挥作用。我想要存根:
@alliance.save
以便它返回true。我试过了:
Alliance.stub(:save).and_return(true)
但它不起作用。有什么想法吗?
答案 0 :(得分:16)
如果我没弄错的话,Alliance.stub(:save)
会影响对Alliance.save
的调用。你想要@alliance.stub(:save).and_return(true)
。
Mocha有一个有用的方法any_instance
,因此您可以执行类似Alliance.any_instance.stubs(:save).returns(true)
的操作,这将(顾名思义)为任何实例存储save
方法Alliance
。
答案 1 :(得分:7)
使用新的RSpec语法:
allow_any_instance_of(Alliance).to receive(:save).and_return(true)
答案 2 :(得分:4)
你可能正在寻找类似的东西:
describe AllianceController do
let(:alliance) { mock_model(Alliance) }
describe "#<controller action>" do
before do
Alliance.stub :new => alliance
end
context "valid alliance" do
before do
alliance.stub :save => true
end
it "should ..." do
end
end
end
end
内部上下文允许您使用具有存根方法存根的Alliance模拟返回true。