2017-09-12 6 views
12

Ich habe ein Juwel namens "fantastisch" mit einer Dummy-App inside zu testen. Wenn die Dummy-App läuft, funktioniert alles gut.Gem Integration Tests scheitern mit jQuery nicht gefunden

Allerdings, wenn ich die Tests ausführen, funktioniert Unit-Tests in Ordnung, aber Integrationstests (Capybara + Poltergeist) nicht mit der Meldung:

Sprockets::FileNotFound: couldn't find file 'jquery' with type 'application/javascript'.

Checked in these paths:

/fantastic/spec/dummy/app/assets/images, /fantastic/spec/dummy/app/assets/javascripts, /fantastic/spec/dummy/app/assets/stylesheets, /fantastic/app/assets/javascripts, /fantastic/app/assets/stylesheets, /fantastic/vendor/assets/javascripts

Einige meiner Dateien:

fantastic.gemspec

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

spec/Dummy/app/assets/Javascripts/application.js

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

Die Sache ist, dass, wenn Schienen Server funktioniert alles einwandfrei läuft, und jQuery richtig (Getestet habe ich es in der geladen Browser-Konsole).

Haben Sie eine Idee, was bei Tests passiert?

EDIT

Ich habe versucht Capybara.app eine benutzerdefinierte erstellen:

spec/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 

die Dummy-App Gegeben ist in spec/dummy/ Ordner.

Und das ist der Fehler, den ich bekomme, wenn ich die Tests laufen

Failure/Error: expect(page).to have_content "Users" expected to find text "Users" in "Not Found: /users". (However, it was found 1 time using a case insensitive search.) # ./spec/features/record_updated_spec.rb:6:in `block (2 levels) in '

+1

Aufgrund des ungewöhnlichen Standorts Ihrer App ist es möglich, dass der apps root nicht korrekt erkannt wird. Sie müssen möglicherweise eine benutzerdefinierte "Capybara.app" einstellen - sehen, wie Capybara den Standard definiert - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/rails.rb –

+0

@ThomasWalpole Danke für Ihre Hilfe , aber ich kann es immer noch nicht schaffen. Ich habe gerade weitere Informationen hinzugefügt, nachdem ich Ihre Eingabe verwendet habe, können Sie sich bitte meine Bearbeitung ansehen? –

+0

Ist dies ein öffentlich zugängliches Repo? (Ich sehe kein Juwel namens phantastisch in rubygems.org) –

Antwort

6

Dies ist, was das Problem Festsetzung endete.

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

    isolate_namespace Megaphone 
    end 
end 
Verwandte Themen