2012-02-20 3 views
0

私はこのクラスをテストする方法について考えています。そのインターフェイスは、Recurly APIをラップするadd_propertyとremove_propertyの2つのメソッドしか公開していません。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 

は、ここで私が記述しようとしていますテストの概要ですが、ここでの私の目標は、Recurly宝石は、テストの独自のセットを持つ素敵なラッパーを提供するので、APIを打つことではありません。しかし、私は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 

答えて

0

VCR gemをチェックしてください。設定したAPIを使わずにAPIテストを行うことができます。

+1

これは私の意図したものではありません。モデルを一気にぶつけないようにしたいと思います。 APIは十分にテストされています。私はそれを打つ必要はありません。私は正確にそれをスタブし、レスポンスの内容を理解することができます。 – TheDelChop

+0

@TheDelChop - 残念ながら、レスポンスをスタブしてコードをテストする方法は、APIラッパーをテストする際に行う必要があります – dennismonsewicz

関連する問題