RSpec のリクエスト仕様を使用して、ホストが localhost:3000 ではなくリモート URL を指すように変更しようとしています。これが可能かどうか教えてください。
注: リモート URL は単なる JSON API であることに言及したかっただけです。
RSpec のリクエスト仕様を使用して、ホストが localhost:3000 ではなくリモート URL を指すように変更しようとしています。これが可能かどうか教えてください。
注: リモート URL は単なる JSON API であることに言及したかっただけです。
はい、可能です
基本的
require 'net/http'
Net::HTTP.get(URI.parse('http://www.google.com'))
# => Google homepage html
ただし、テストは外部リソースに依存しない方がよいため、応答をモックする必要がある場合があります。
次に、Fakeweb などのモック gem を使用できます: https://github.com/chrisk/fakeweb
require 'net/http'
require 'fakeweb'
FakeWeb.register_uri(:get, "http://www.google.com", :body => "Hello World!")
describe "external site" do
it "returns 'World' by visiting Google" do
result = Net::HTTP.get(URI.parse('http://www.google.com'))
result.should match("World")
#=> true
end
end
通常の html 応答または jsonp 応答を取得しても問題ありません。すべて似ています。
上記は低レベルの方法です。より良い方法は、アプリでコードを使用して確認することです。しかし、最終的には常にモックが必要になります。