У меня проблемы с использованием Sinatra с Capybara.
Я хочу протестировать приложение на чистом javascript.Это просто обычный index.html, который обслуживает Sinatra.
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
Проблема в том, что ничего не происходит.Согласно скринкасту Райана Бейтса Firefox должен запустить и запустить тест, если к блоку describe
добавлено js: true
.
Вот мой файл 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
Я создал complete пример проекта на Github, который можно найти здесь: https://github.com/oleander/capybara-js-fails
Кто-нибудь знает, почему это не получается?