3

我正在尝试使用 RSpec 的请求规范将主机更改为指向远程 URL 而不是 localhost:3000。请让我知道这是否可能。

注意:只是想提一下远程 URL 只是一个 JSON API。

4

1 回答 1

5

是的,有可能

基本上

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 响应并不重要。都类似。

以上是低级方式。更好的方法是在应用程序中使用您的代码来检查它。但是你最终总是需要模拟。

于 2013-08-21T17:59:42.210 回答