저는 전자 상거래 시스템을 연구 중이며 RSpec에 익숙합니다.RSpec, should_receive 및 create를 사용하여 설정 도구를 테스트합니까?
주문과 관련된 지불이 있습니다. 주문이 완료되면 Google 결제 게이트웨이를 통해 결제 처리가 시작됩니다.
다음은 사양, 적절한 방법 및 실패 메시지입니다.
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 클래스입니다.
두 번째 사양은 실패합니다. source = 수신하지 못했습니다. 명령을 내리면, 그 과정을 말합니다! 순서가 잘못되었습니다. 주문하지 않으면, 그것은 예상했다 : 근원 = 한 번, 그러나 그것을 결코받지 않았다. 나는 주문한 이유가 무엇인지 이해하지만 단지 그것이 소스가 결코 받아 들여지지 않는다고 주장하고 있다는 것을 분명히하고 싶었습니다.
작성 중입니다! 소스가 아님 = =? 출처가 지불에 올바르게 설정되어 있는지 테스트하기위한 적절한 방법은 무엇입니까?
충분합니다. payment.should_receive (: process!)를 코드의 해당 섹션에도 접 힙니다. –
예, 죄송합니다. 어젯밤에 그걸 잡았어야 했어. – patrickmcgraw