尝试使用RSpec测试OmniAuth时出现“禁用了真实HTTP连接”错误

iro*_*and 5 ruby rspec ruby-on-rails

我一直在尝试用RSpec测试OmniAuth,但是它没有用。

spec_helper.rb

OmniAuth.config.test_mode = true
OmniAuth.config.add_mock(:twitter, {:uid => '12345'})
Run Code Online (Sandbox Code Playgroud)

和在 spec/requests/static_pages_spec.rb

describe "for signed-in users" do
  before do
    visit "auth/twitter"
  end
  it { should have_content("Log out") }
end
Run Code Online (Sandbox Code Playgroud)

而且我得到以下错误。

 Failure/Error: visit "auth/twitter"
 ActionView::Template::Error:
   Real HTTP connections are disabled. Unregistered request: 
Run Code Online (Sandbox Code Playgroud)

根据正式文件的要求,auth/twitter应重定向到auth/twitter/callback。为什么尝试建立HTTP连接?

我已经阅读了以下网页和问题,但无法找到测试失败的原因。

http://blog.zerosum.org/2011/03/19/easy-rails-outh-integration-testing.html https://github.com/intridea/omniauth/wiki/Integration-Testing omn​​iauth-facebook并使用rspec http://blog.plataformatec.com.br/2010/12/acceptance-tests-for-omniauth/

kai*_*ter 7

正如 dfedde 所暗示的,WebMock 会在集成测试中阻止 HTTP 请求,但您可以存根请求或调用WebMock.allow_net_connect!以将测试配置为正常运行。查看 尝试让 selenium 在 rails 3 中工作 - “WebMock::NetConnectNotAllowedError”https://github.com/bblimke/webmock了解详细信息。