Я работаю над системой электронной коммерции и знакомлюсь с RSpec.
Заказ связан с платежом.Когда заказ завершен, он начинает обрабатывать платеж через наш платежный шлюз.
Ниже приведена спецификация, соответствующий метод и сообщение об ошибке.
require 'spec_helper'
describe Order, "#process_payment" do
let!(:user) { create_user }
let!(:credit_card) { new_credit_card }
let!(:order) { user.orders.create! total: 200 }
let!(:payment) { stub('payment', started_processing!: true, ) }
before do
credit_card.stub(sale: true)
order.stub(credit_card: credit_card)
order.payments.stub(create!: payment)
payment.stub(:source= => true, process!: true)
end
it "creates a payment" do
order.payments.should_receive(:create!).
with(amount: 200, source: credit_card).and_return payment
order.process_payment
end
it "sets the payment's source to the credit card and tells it to process!" do
payment.should_receive(:source=).with(credit_card).ordered
payment.should_receive(:process!).ordered
order.process_payment
end
end
Вот класс Order.
class Order < ActiveRecord::Base
...
def process_payment
payments.create!(amount: total, source: credit_card).tap do |payment|
payment.process!
end
end
...
end
Вторая спецификация не работает, утверждая, что: source = никогда не принимается.С заказанным, это просто говорит о том, что процесс!вызывается из строя.Без заказа он говорит, что ожидал: source = один раз, но так и не получил его.Я понимаю, почему заказанный должен быть там, но просто хотел пояснить, что он утверждает, что: source = никогда не принимается.
Создает!не вызывать источник =?Как правильно проверить, правильно ли указан источник платежа?