5

Railsコントローラーでrespond_toからrespond_withに切り替えようとしています。コントローラ仕様の無効な保存をテストすることを除いて、すべてが順調に進んでいます。次に例を示します。

MyControllerの説明...

describe "PUT update" do
    context "with invalid attributes" do
      it "should re-render the edit page" do
        style = stub_model(Style)
        Style.stub(:find) { style } 
        Style.any_instance.stub(:save).and_return(false)
        put :update
        response.should render_template(:edit)
      end
    end
  end
end

これは、以前のrespond_toスタイルの更新アクションでは問題なく機能しますが、respond_withを使用すると、次のようになります。

失敗/エラー:response.should render_template( "edit")

つまり、要するに、これをどのようにテストすればよいのでしょうか。...または、render_withが何をしているのかを知っていて、まったくテストしていないと仮定する必要がありますか?一般的な提案はありますか?

よろしくお願いします

PS:更新アクション:

  def update
    @style = Style.find(params[:id])
    flash[:notice] = "Style updated" if @style.update_attributes(params[:style])
    respond_with(@style)
  end
4

1 に答える 1

5

私はこの正確なことを調べてきました(このトピックをどのように見つけたか)-これまでのところ、次のことがわかっています:

Location.any_instance.stub(:valid?).and_return(false)
Location.any_instance.stub(:errors).and_return('anything')

(場所は、respond_with を使用する私のモデルです)

しかし、私はそれを行うためのより良い方法があるに違いないと信じています-それを見つけたら、必ず投稿します!

: 私は Responders gem も使用しているため、使用していない場合、これらの行の 1 つが必要ない場合があります。

于 2012-04-21T08:48:09.240 に答える