Использование Capybara для тестирования чистого JavaScript-приложения - PullRequest
4 голосов
/ 17 октября 2011

У меня проблемы с использованием 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

Кто-нибудь знает, почему это не получается?

1 Ответ

4 голосов
/ 18 октября 2011

Здесь - исходный ответ от Джонаса Никласа .

Вам необходимо указать 'capybara / rspec' и задать: type =>: request.
См. Раздел «Использование Capybara README» в разделе «Использование Capybara с RSpec».
/ Jonas

Здесь является рабочим примером на Github.

...