如何设置控制器中的RSpec关联?

时间:2013-02-07 22:40:24

标签: ruby-on-rails rspec

我有以下内容:

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

1 个答案:

答案 0 :(得分:1)

我猜current_cart正在返回零。您可以使用已创建的模拟购物车将其存根:

before { subject.stub(:current_cart) { cart } }