【发布时间】:2019-07-17 08:17:27
【问题描述】:
def show
begin
@cart = Cart.find(params[:id])
authorize(@cart)
@cart_entries = CartEntry.where(:cart_id => @cart.id)
@products = {}
@pr_references = {}
@cart_entries.each do |cart_entry|
@pr_references[cart_entry.id] = Reference.find(cart_entry.reference_id)
@products[cart_entry.id] = Product.find(@pr_references[cart_entry.id].product_id)
end
rescue ActiveRecord::RecordNotFound => e
respond_to do |format|
format.json {render json: {'error': e}, status: :not_found}
end
end
我想测试 Cart.find() 何时找不到购物车,我想测试该方法返回 404 HTTP 代码,测试如下。
it 'don\'t find cart, should return 404 error status' do
delete :destroy, params: {id: 123, format: 'json'}
expect(response).to have_http_status(404)
end
你有一些迹象或解决方案吗? 我是 ruby on rails 的菜鸟,如果您对我发布的代码有一些提示,我会接受。
谢谢你:)
【问题讨论】:
-
你当前测试的输出是什么?
-
输出为 Pundit::AuthorizationNotPerformedError: Api::V1::CartsController 0) Api::V1::CartsController GET #show 找不到购物车,返回 404 错误状态 Failure/Error: get :显示,参数:{id:123,格式:'json'}
标签: ruby-on-rails unit-testing rspec