[英]Stub Model Save Method in Rspec/Rails
This should be simple, but i can't get it to work. 这应该很简单,但我不能让它工作。 I want to stub an :
我想要存根:
@alliance.save
so that it returns true. 这样它就会返回true。 I tried :
我试过了 :
Alliance.stub(:save).and_return(true)
but it won't work. 但它不会起作用。 Any ideas ?
有任何想法吗 ?
If I'm not mistaken, Alliance.stub(:save)
would affect calls to Alliance.save
. 如果我没弄错的话,
Alliance.stub(:save)
会影响对Alliance.save
调用。 You want @alliance.stub(:save).and_return(true)
. 你想要
@alliance.stub(:save).and_return(true)
。
Mocha has a useful method any_instance
, so you could do something like Alliance.any_instance.stubs(:save).returns(true)
, which would (as the name implies) stub the save
method for any instance of Alliance
. Mocha有一个有用的方法
any_instance
,所以你可以做一些像Alliance.any_instance.stubs(:save).returns(true)
这样的东西Alliance.any_instance.stubs(:save).returns(true)
顾名思义)会为任何Alliance
实例save
方法。
使用新的RSpec语法:
allow_any_instance_of(Alliance).to receive(:save).and_return(true)
You're probably looking for something like: 你可能正在寻找类似的东西:
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
The inner context allows you to work with an Alliance mock which has the save method stubbed to return true. 内部上下文允许您使用Alliance mock,其中save方法存根以返回true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.