먼저 Rails에서 테스트 작성에 관해서 newb입니다. 양해 해 주셔서 감사합니다. 그것은 #process
방법에 대한 테스트를 작성하는 것을 시도에 올 때 나는 약간의 손실입니다Rails/Rspec : 어려운 테스트 시간 쓰기
require 'spec_helper'
describe Webhook do
describe "instance methods" do
let(:webhook) { Webhook.new }
describe "#event_accepted?" do
it "returns true with a correct event_type" do
webhook.event_type = "customer.subscription.deleted"
webhook.event_accepted?.should be_true
end
it "returns false with an incorrect event_type" do
webhook.event_type = "foobar123"
webhook.event_accepted?.should be_false
end
end
end
end
:
require 'json'
class Webhook
attr_accessor :customer_id, :response, :event_type
ACCEPTED_EVENTS = ["customer.subscription.deleted", "invoice.payment_succeeded", "invoice.payment_failed"]
def initialize(json = nil)
if json
@response = JSON.parse(json, symbolize_names: true)
@customer_id = @response[:data][:object][:customer]
@event_type = @response[:type]
@user = User.find_by_customer_id(@customer_id)
end
end
def event_accepted?
true if ACCEPTED_EVENTS.include?(@event_type)
end
def process
return unless event_accepted?
case @event_type
when "invoice.payment_succeeded"
begin
invoice = Stripe::Invoice.retrieve(@response[:data][:object][:id])
InvoiceMailer.payment_succeeded_email(@user, invoice).deliver if invoice.amount_due > 0
rescue => e
Rails.logger.info "An error as occurred! #{e}"
end
when "customer.subscription.deleted"
@user.expire! if @user
when "invoice.payment_failed"
InvoiceMailer.payment_failed_email(@user).deliver
end
end
end
것은 여기까지 내 테스트입니다 :
여기 내 클래스입니다. 어떤 도움이라도 대단히 감사하겠습니다!
여기서 질문은 무엇입니까? – dax
내 Webhook 클래스의 프로세스 메서드 주위에 테스트를 작성하는 방법 – dennismonsewicz