2016-11-02 7 views
1

私のレールアプリケーションでは、私はrspecテストを書くためのAPIコールを持つモジュールを持っています。あなたはこれに対して適切なテストとして何を書いていますか?私はhttpsyとrspecを組み合わせることを読んでいません。なぜなら、それは非常に遅く、これをどうやって行うのか分かりません。助けてくれてありがとう!このコードをrspecレールでどのようにテストすればよいですか?

module BandsInTown 
    class API 
    attr_reader :artist_name, :info, :events 

    def initialize(artist_name) 
     @artist_name = artist_name 
    end 

    def artist_info 
     @info = fetch_data 
    end 

    def artist_events 
     @events = fetch_data 'events' 
    end 

    private 

    def fetch_data(endpoint = nil) 
     request_url = "http://api.bandsintown.com/artists/#{[@artist_name, endpoint].compact.join('/')}.json?api_version=2.0&app_id=AUTH_KEY" 
     resp = HTTParty.get(request_url) 
     return false if resp.code != 200 
     resp 
    end 
    end 
end 

答えて

0

私はAPIリクエストを行う周りを取得するためにwebmockを使用します。ここで

はyoutはspec_helper.rb内のコードは次のようになります方法の例です:

require 'webmock/rspec' 

def stub_api_requests 
    response = File.read('spec/fixtures/payload.json') 
    stub_request(:get, %r{http:\/\/api.bandsintown.com\/artists/\/(.)*}) 
    .to_return(
     status: 200, 
     body: response 
    ) 
end 

config.before(:each) do 
    stub_api_requests 
end 
+0

おかげバシレ、これはspec_helperに行くだろうが、何がRSpecのテスト自体に行きますか? – Gregor

+0

私は分かりません。いつものようにメソッドをテストするだけです。あなたはウェブモックでレスポンスをコントロールできます。 – Sebastian

+0

ええ、それは今得ました!ありがとう! – Gregor

関連する問題