1
我有一个订单模型,其中has_many
付款和结帐控制器。如果没有付款,控制器应该创建新的付款。扼杀或嘲弄Foo.has_many酒吧并预先填充酒吧
private
# Helper method allows calling from several controller-callbacks.
def add_payment_if_not_exists
if @order.payments.empty?
Payment.create(...)
end
end
,现在我想在CheckoutControllerSpec
it 'should not add a payment when already added' do
@order = mock_model(Order)
@order.payments << mock_model(Payment).as_null_object
Payment.should_not_receive(:new)
post :homecoming, @params
end
符合规范这种行为不过,这将引发
Failure/Error: @order.payments << mock_model(Payment).as_null_object
Mock "Order_1003" received unexpected message :payments with (no args)
不知怎的,我还是不神交rspecs磕碰和完全嘲讽的概念。我错在哪里?
谢谢。残根是我忘记的东西。我简化了代码。现在我实际上在块之前将大部分数据存储在数据库中,因为我正在Spree中进行测试,Spree是紧耦合模型的spagetti-monster。但我正在重构我的测试以更频繁地使用存根和嘲讽。 – berkes