2012-12-07 2 views
0

방법과 스펙이 있습니다.스텁 연결

class Event 
    def self.renew_subscription(user) 
    subscription = user.subscription 

    result = subscription.renew 

    user.pay(subscription.plan.price_in_cents) if result 

    result 
    end 
end 


let!(:user) { create :user } 

describe ".renew_subscription" do 
    before do 
    user.subscription.stub!(:renew).and_return(true) 
    user.subscription.stub!(:plan). 
     and_return(Struct.new("SP", :price_in_cents).new(699)) 
    end 

    context "when have to pay" do 
    it "pays" do 
     user.should_receive(:pay) 
     Event.renew_subscription user 
    end 
    end 
end 

이 사용자 belongs_to :subscription 및 subsription belongs_to :plan

subscription.renewsubscription.plan (또는 subscription.plan.price_in_cents를) 스텁 할 수있는 방법이 있나요?

답변

1

난 당신이 그런 짓을하는 것이 아마 안전하다고 생각 :

Subscription.any_instance.stub(:renew).and_return(true) 
plan = mock_model(Plan) 
Subscription.any_instance.stub(:plan).and_return(plan) 
plan.stub(:price_in_cents).and_return(699) 

이 너무 그 일을 다른 방법은 아마도,하지만 난이 도움이되기를 바랍니다.

+0

굉장합니다. 감사 – ck3g