1
這是我的carts_controller.rb。默認情況下,控制器動作添加使add.js.erb在/ app /視圖/車/request.formats:[「text/html」]替換爲[「application/javascript」]
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進行測試渲染:[「application/javascript」] instead [「text/html」]?