加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用Capybara测试纯JavaScript应用程序

发布时间:2020-12-17 02:30:24 所属栏目:百科 来源:网络整理
导读:我在使用Sinatra和Capybara时遇到了一些问题. 我想测试一个纯粹的JavaScript应用程序.这只是Sinatra服务的普通index.html. require "sinatra"get "/" do File.read("public/index.html")end 比方说,我想测试一下这段代码. $("a.link").click(function(){ $(t
我在使用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

谁知道它失败的原因?

解决方法

Here是 Jonas Nicklas的原始答案.

You need to require ‘capybara/rspec’ and set :type => :request.
See the Capybara README section on “Using Capybara with RSpec”.
/Jonas

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读