0

我正在考虑测试这个类的方式,它的接口只公开了两个方法,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 gem 提供了一个很好的包装器和它自己的一组测试。但是,我开始认为我只能通过点击 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
4

1 回答 1

0

查看VCR gem - 它允许 API 测试,而无需在设置后点击 API。

于 2012-02-20T07:40:35.373 回答