【问题标题】:Using Capybara to test pure JavaScript application使用 Capybara 测试纯 JavaScript 应用
【发布时间】:2011-12-08 22:29:11
【问题描述】:

我在使用 Sinatra 和 Capybara 时遇到了一些问题。

我想测试一个纯 JavaScript 应用程序。它只是一个由 Sinatra 提供的普通 index.html。

require "sinatra"

get "/" do
  File.read("public/index.html")
end

假设我想测试这段代码。

$("a.link").click(function(){
  $(this).replaceWith("New String");
});

<a href="#link" class="link">Click me!</a>

那么测试看起来像这样。

describe "requests", js: true do    
  it "should display a message" do
    visit "/"
    click_link "Click me!"
    page.should have_content("New String")
  end
end

问题是什么都没有发生。根据Ryan Bates screencast,如果将js: true 添加到describe 块中,Firefox 应该启动并运行测试。

这是我的spec_helper 文件。

require "rspec"
require "capybara"
require "capybara/dsl"

Capybara.javascript_driver = :selenium
require_relative "./../server"

Capybara.app               = Sinatra::Application
Capybara.javascript_driver = :selenium
Capybara.default_wait_time = 10

RSpec.configure do |config|
  config.mock_with :rspec
  config.include Capybara
end

这是运行rspec rspec/request_spec.rb时的输出。

requests
  should display a message (FAILED - 1)

Failures:

  1) requests should display a message
     Failure/Error: page.should have_content("New String")
       expected #has_content?("New String") to return true, got false
     # ./spec/request_spec.rb:5:in `block (2 levels) in <top (required)>'

Finished in 4.38 seconds
1 example, 1 failure

Failed examples:

rspec ./spec/request_spec.rb:2 # requests should display a message

我在 Github 上创建了一个完整示例项目,可以在这里找到: https://github.com/oleander/capybara-js-fails

有人知道为什么会失败吗?

【问题讨论】:

    标签: ruby selenium rspec sinatra capybara


    【解决方案1】:

    Here 是来自Jonas Nicklas 的原始答案。

    您需要 'capybara/rspec' 并设置 :type => :request。
    请参阅 Capybara README 部分的“将 Capybara 与 RSpec 结合使用”。
    /乔纳斯

    Here 是 Github 上的一个工作示例。

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      相关资源
      最近更新 更多