Правильное тестирование API-оболочки для Recurly - PullRequest
0 голосов
/ 20 февраля 2012

Я думаю о том, как я могу протестировать этот класс, его интерфейс предоставляет только два метода, add_property и remove_property, которые просто оборачивают Recurly API.

class SubscriptionManager

  def initialize(account_code)
    @account_code = account_code
  end

  def add_property
    subscription.update_attributes subscription_add_ons: [{ add_on_code: 'property', quantity: property_count + 1 }]
  end

  def remove_property
    subscription.update_attributes subscription_add_ons: [{ add_on_code: 'property', quantity: property_count - 1 }]
  end

  private

  def property_count
    subscription.add_ons.first[:quantity]
  end

  def subscription
     @subscription ||= Recurly::Subscription.find(@account_code)
  end
end

Вот краткий обзор теста, который я пытаюсь написать, но моя цель здесь не в том, чтобы поразить API, поскольку гем Recurly предоставляет хорошую оболочку с собственным набором тестов. Тем не менее, я начинаю думать, что могу сделать это, только нажав API. У кого-нибудь есть идеи?

describe SubscriptionManager do
  subject  { SubscriptionManager.new('1') }

  before do
    subscription = mock 'Subscription'
    Recurly::Subscription.stub(:find).with('1').and_return subscription
  end

  describe 'add_property' do
    it 'increases the quantity of the property add on' do

    end
  end

  describe 'remove_property' do

    it 'decreases the quanity of the property add on' do

    end
  end
end

1 Ответ

0 голосов
/ 20 февраля 2012

Проверьте VCR gem - он позволяет тестировать API, не обращаясь к API после настройки.

...