我正在考虑测试这个类的方式,它的接口只公开了两个方法,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