2011-07-17 25 views
3

ここにTDDが新しくあります!ここでrspecモッキング外部API

は簡単に、私は(ruby library)をテストしたいものです。

エラーが発生し
describe Text do 
    it "should call the Twilio API with credentials" do 
    #pending "mocking api although not passed in.." 
    t = mock(Twilio::RestAccount) 
    twapi = mock("new twapi").should_receive(:request).and_return(Net::HTTPSuccess) 
    t.stub(:new).and_return(twapi) 

    Twilio::RestAccount.should_receive(:new) 

    sms = Factory.create(:boring_sms) 
    sms.send_sms 
    end 
end 

:nilのための未定義のメソッド `リクエスト」を

account = Twilio::RestAccount.new(ACCOUNT_SID, ACCOUNT_TOKEN) 
    resp = account.request(
     "/#{API_VERSION}/Accounts/#{ACCOUNT_SID}/SMS/Messages", 
     'POST', 
     smsInfo 
    ) 

そしてここでは、テストコードの試みです: NilClass

私は正しいアプローチをとっていますか?ありがとう!

答えて

3

をTwilioや他の外部サービスで、私はまた、ビデオデッキを使用することを検討してください。 http://relishapp.com/myronmarston/vcr

手動テストでは一度動作させるのが有益ですが、基本的に何かを台無しにしないことを確認しています。欠点は、VCRでテストされたコードに触れるたびに、VCRでテストされたすべてのものを手動で再テストする必要があることです。考慮すべき他のもの。

+0

この質問が尋ねられたので、私はVCRの大ファンになりました! –

3

チェックアウトwebmockを確認してください。これは本当にこのようなものに使用したいものです。あなたがこれを行うときは、0パラメータで新しいスタブいる

4

t.stub(:new).and_return(twapi) 

しかし、あなたのテストは以下のとおりです。

Twilio::RestAccount.new(ACCOUNT_SID, ACCOUNT_TOKEN) 

2つのparamsで新しく追加されました。

試してみてください。

t.should_receive(:new).once.with(any_args()).and_return(twapi) 

および削除:

Twilio::RestAccount.should_receive(:new) 
関連する問題