1

RailsアプリケーションでRSpecとdecent_exposure gemを使用すると問題が発生しました。

コントローラーのテストが失敗するのは、decent_exposure がメソッド "new" を 2 回 (Model.new(params[name]) 呼び出しているためです。 2番目に期待するもの(Brand.new(params["brand"]))テストファイルで最初の呼び出しをスキップする必要があります.Brand.should_receive(:new).with(...).once.and_return(band)動かない。

私のテストファイル:

let(:brand) {
  mock_model(Brand).as_null_object
}

before do
  Brand.stub(:new).and_return(brand)
end

describe "with valid parameters" do
  it "should create a new brand" do
    Brand.should_receive(:new).with(
      "name" => "LG",
    ).and_return(brand)

    post :create, :brand => {
      "name" => "LG",
    }
  end
end

それで、これを通過する方法を理解するのを手伝ってもらえますか?

4

1 に答える 1

0

これを試して:

Brand.should_receive(:new).once.with(any_args())
Brand.should_receive(:new).once.with("name" => "LG").and_return(brand)

コントローラーが永続化するために使用するメソッドに期待を追加することをお勧めしbrandます。通常、これはsave次のとおりです。

brand.should_receive(:save) { true }
于 2012-07-17T21:12:15.483 に答える