Rails + Capybara + poltergeist ArgumentError: rack-test требует приложения в стойке, но никто не был указан

Я только начал играть с Capcerabra + poltergeist и после выполнения моего теста Capy rspec ./spec/features/test_spec.rb Я получил следующую ошибку:

 Failure/Error: visit '/item/new'
 ArgumentError: rack-test requires a rack application, but none was given

Кроме того, у меня есть несколько стандартных тестов rspec, и всякий раз, когда я пытаюсь исправить все тесты, тесты rspec успешно передаются, но только тест capy терпит неудачу с странной ошибкой

ActionView::Template::Error: couldn't find file 'jquery.min' (in app/assets/javascripts/application.js:13)

Это приводит меня к путанице.

Я просмотрел несколько похожих потоков в stackoverflow, в некоторых случаях ошибка связана с отсутствием config.include Capybara:: DSL в spec_helper.rb или неправильным расположением тестов. Я внес соответствующие изменения, но это не сработает, ошибка остается прежней.

Мой файл spec_helper.rb

require 'capybara'
require 'capybara/dsl'
require 'capybara/poltergeist'

Capybara.javascript_driver = :poltergeist

RSpec.configure do |config|
  config.include Capybara::DSL
end

Полная версия spec_helper: http://pastebin.com/qkANfu39

Тестовый файл:

#spec/features/test_spec.rb

require 'spec_helper'
describe 'accessibility of webpage' do
  it 'should access web page' do
    visit '/item/new'
    expect(page).to have_content("Something")
  end

end

Мысли?

Ответ 1

  • Update

Это обходное решение больше не требуется в соответствии с отчетом (см. комментарии), но я еще не проверил его.


Обнаружено обходное решение..

Мне нужно было указать URL-адрес хоста приложения и драйвер по умолчанию.

#spec/spec_helper.rb

require 'capybara'
require 'database_cleaner'
require 'capybara/dsl'
require 'capybara/poltergeist'


Capybara.configure do |c|
  c.javascript_driver = :poltergeist
  c.default_driver = :poltergeist
  c.app_host = "http://localhost:3000"
end

Обновление 1

Чтобы исправить ошибку:

 Failure/Error: visit '/item/new'
 ArgumentError: rack-test requires a rack application, but none was given

Я включил файл rails_helper в мой тест Capy. окончательная версия теста:

require 'rails_helper'
require 'spec_helper'

describe 'accessibility of webpage' do
  it 'should access web page' do
    visit '/item/new'
    expect(page).to have_content I18n.t("form_input.item.item_s")
  end
end

После этого по какой-то причине указанный URL-адрес app_host больше не нужен, и его можно удалить из вспомогательного файла spec_helper. Окончательная версия:

Capybara.configure do |c|
  c.javascript_driver = :poltergeist
  c.default_driver = :poltergeist
end

Полная версия spec_helper.rb http://pastebin.com/DKgF1uQA

Ошибка

ActionView::Template::Error: couldn't find file 'jquery.min' (in app/assets/javascripts/application.js:13)

Произошло потому, что gem 'jquery-rails' не был доступен в тестовой области в моем Gemfile, он был доступен только в: разработке и: производственной среде. Я переместил gem 'jquery-rails' в глобальную область. Полная версия Gemfile: http://pastebin.com/dt4KrHGG