0

私は次のものを持っています:

let(:coupon) { mock_model Coupon, code: 'special' }
let(:cart) { mock_model Cart }

it "assigns a coupon to the cart" do
  post :redeem_coupon, coupon: {coupon: coupon.code}
  assigns(:cart).coupon.should eql(coupon)
end

私はそれで次のエラーがあります:

 Failure/Error: assigns(:cart).coupon.should eql(coupon)
 NoMethodError:
   undefined method `coupon' for nil:NilClass

以下が機能することを確認したいだけです。

@cart = current_cart

if request.post?
  coupon = Coupon.find_active_by_code(params[:coupon][:coupon], @cart.subtotal, current_member)
  if coupon
    @cart.coupon = coupon
    @cart.save!
  end
end
4

1 に答える 1

1

私はcurrent_cartnilを返していると思います。すでに作成したモックカートでスタブできます。

before { subject.stub(:current_cart) { cart } }
于 2013-02-07T22:51:53.033 に答える