我有以下内容:
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
答案 0 :(得分:1)
我猜current_cart
正在返回零。您可以使用已创建的模拟购物车将其存根:
before { subject.stub(:current_cart) { cart } }