Capybara:存根无路由匹配

jas*_*328 6 routes ruby-on-rails capybara

我有一个水豚测试来检查页面上的内容。我有一个 img 标签,它的 src 调用的 URL 不存在。当我运行测试时,我收到:

Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"

  ActionController::RoutingError:
    No route matches [GET] "/avatars/original/missing.png"
Run Code Online (Sandbox Code Playgroud)

老实说,我并不关心这个要求。有什么办法可以让我/avatars/original/missing.png对水豚测试进行存根吗?

Tho*_*ole 4

使用 Poltergeist 时,您可以使用黑名单功能来阻止特定请求。如果使用 Poltergeist 1.10.0+,您可以通过添加 :url_blacklist 选项为驱动程序注册块中的每个测试配置它

Capybara.register_driver :poltergeist do |app|
  #  Change domain name as necessary
  options = { url_blacklist: ['http://www.example.com/avatars/original/missing.png'] } # you can also use * as a wildcard
  Capybara::Poltergeist::Driver.new(app, options)
end
Run Code Online (Sandbox Code Playgroud)

在 1.10 之前或者如果你想在逐个测试/块之前进行测试,你可以这样做

page.driver.browser.url_blacklist = ['http://www.example.com/avatars/original/missing.png']
Run Code Online (Sandbox Code Playgroud)