Подтвердить что ты не робот

Не удалось выполнить тесты интеграции Gem с jQuery

У меня есть драгоценный камень, называемый " фантастический" с фиктивным приложением внутри теста. При запуске фиктивного приложения все работает хорошо.

Однако, когда я запускаю тесты, модульные тесты работают нормально, но тесты интеграции (Capybara + Poltergeist) завершаются с сообщением:

Sprockets:: FileNotFound: не удалось найти файл "jquery" с типом 'Приложение/JavaScript.

Проверено на этих путях:

/Fantastic/SPEC/холостые/приложение/активы/изображения, /Фантастический/SPEC/холостой/приложение/активы/JavaScripts, /Фантастические/SPEC/холостые/приложение/активы/таблицы стилей, /Фантастические/приложение/активы/JavaScripts, /Фантастические/приложение/активы/таблицы стилей, /Фантастический/поставщик/активы/JavaScripts

Некоторые из моих файлов:

fantastic.gemspec

# ...
s.add_development_dependency "capybara"
s.add_development_dependency "poltergeist"
s.add_development_dependency "jquery-rails"
# ...

спецификации/манекена/приложение/активы/JavaScripts/application.js

//= require jquery // Error is produced in this line
//= require jquery_ujs
//= require fantastic
//= require_tree .

Дело в том, что при запуске сервера rails все работает отлично, а jQuery загружается правильно (я тестировал его в консоли браузера).

Любая идея о том, что происходит на тестах?

ИЗМЕНИТЬ

Я попытался создать пользовательский Capybara.app:

спецификации /spec _helper.rb

ENV["RAILS_ENV"] = 'test'
# Require dummy Rails app
require File.expand_path("../../spec/dummy/config/environment", __FILE__)

require 'database_cleaner'
require 'rspec/rails'
require 'capybara/rspec'
require 'capybara/poltergeist'

# Requires supporting ruby files with custom matchers and macros, etc,
# in spec/support/ and its subdirectories.
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}

require 'capybara/dsl'

Capybara.app = Rack::Builder.new do
  map "/spec/dummy/" { run Rails.application }
end.to_app

Capybara.register_driver :poltergeist do |app|
  Capybara::Poltergeist::Driver.new(app, {js_errors: false})
end
Capybara.javascript_driver = :poltergeist

RSpec.configure do |config|
  # If true, the base class of anonymous controllers will be inferred
  # automatically. This will be the default behavior in future versions of
  # rspec-rails.
  config.infer_base_class_for_anonymous_controllers = false
  config.infer_spec_type_from_file_location!
end

Учитывая, что фиктивное приложение находится в папке spec/dummy/.

И это ошибка, которую я получаю при запуске тестов

Отказ/Ошибка: ожидание (страница).to have_content "Пользователи"        как ожидается, найдет текст "Пользователи" в "Not Found:/users". (Однако он был найден 1 раз, используя регистр без учета регистра поиск.)      #./spec/features/record_updated_spec.rb:6:in `block (2 уровня) в '

4b9b3361

Ответ 1

Это то, что в итоге решило проблему.

module Fantastic
  class Engine < ::Rails::Engine
    require 'jquery-rails' # <-- this line

    isolate_namespace Megaphone
  end
end