gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 07:32:52 24 4
gpt4 key购买 nike

我在将 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 block ,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

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

最佳答案

HereJonas Nicklas的原始答案.

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

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

关于ruby - 使用 Capybara 测试纯 JavaScript 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7788028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com