これは簡単なはずですが、動作させることができません。私はスタブする:スタブモデルの保存方法をRspec/Railsで
@alliance.save
それが真を返すように。私は試しました:
Alliance.stub(:save).and_return(true)
しかし、それは動作しません。何か案は ?
これは簡単なはずですが、動作させることができません。私はスタブする:スタブモデルの保存方法をRspec/Railsで
@alliance.save
それが真を返すように。私は試しました:
Alliance.stub(:save).and_return(true)
しかし、それは動作しません。何か案は ?
私が間違っていない場合、Alliance.stub(:save)
はAlliance.save
への呼び出しに影響します。あなたは@alliance.stub(:save).and_return(true)
が欲しいです。あなたは(名前が示すように)Alliance
の任意のインスタンスに対してsave
方法をスタブうAlliance.any_instance.stubs(:save).returns(true)
ような何かを、行うことができるように
Mochaは、有用な方法any_instance
を持っています。あなたは、おそらくのようなものを探している
:
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
内側の文脈では、trueを返すようにスタブ保存方法を持っているアライアンスのモックで作業することができます。新しいRSpecの構文使用
+1コメントのSpyrosPから詳細を取得した後、私はおそらくコントローラをテストするための最良の方法だと思います。 –
:
allow_any_instance_of(Alliance).to receive(:save).and_return(true)
うーん、私は実際に保存がインスタンスメソッドであるため、それは同じだと思います。どのような場合でも、私は実際に@allianceにアクセスすることはできません。なぜなら、標準の作成メソッドでは「@alliance = Alliance.new(params [:alliance])」のようなものですからです。私はポスト変数を渡すことができないので、保存のバリデーションをバイパスするだけです: ":post:create、:name => '何でも'" – Spyros
作成されたインスタンス変数に対してメソッドをスタブしたいと言っていますコントローラーでもっと正確な応答を得るのに役立ちます。 ;) –
しかし私はそれに言及します:) – Spyros