2016-11-24 22 views
1

これは私のcarts_controller.rbです。["text/html"]と["application/javascript"]の置換request.formatsの置換

:デフォルトのコントローラのアクションの追加が add.js.erb

//アプリ/ビュー/カート内
class CartsController < ApplicationController 
    def add 
    find_cart_and_product 
    @cart.products << @product 
    CartMailer.product_added(@product).deliver_now 
    end 
end 

レンダリングし、私のテスト

describe 'POST #add' do 
    let(:cart_full_of){ create(:cart_with_products) } 
    let(:product){ create(:product) } 
    before do 
    post :add, session: { cart_id: cart_full_of.id }, params: { product_id: product.id} 
    end 
    it { expect(response.status).to eq(200) } 
    it { expect(response.headers["Content-Type"]).to eql("application/javascript"; charset=utf-8")} 
    it { is_expected.to render_template :add } 
    it 'should add current product into cart' do 
    expect(cart_full_of.products).to eq([product]) 
    end 
end 

は、すべての試験項目に共通のエラーで失敗したことにより、

Failure/Error: post :add, session: { cart_id: cart_full_of.id }, params: { product_id: product.id} 

ActionController::UnknownFormat: 
    CartsController#add is missing a template for this request format and variant. 

    request.formats: ["text/html"] 
    request.variant: [] 

期待されるリクエスト形式に問題があると思うので、テストを強制するにはrequest.formats:["text/html"]の代わりに["application/javascript"]ですか?

答えて

0

これは、(RSpecの3)私の作品:

before :each do 
    request.headers["accept"] = 'application/javascript' 
end