2017-09-12 3 views
12

私は、 "fantastic"というダミーのアプリケーションとテスト中の宝石を持っています。ダミーアプリを実行すると、すべて正常に動作します。私がテストを実行するときjQueryでGem統合テストが失敗する

しかし、ユニットテストは正常に動作しますが、統合テスト(カピバラ+ポルターガイスト)がメッセージで失敗:

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

一部のファイル:

fantastic.gemspec

スペック/ダミー/アプリ/資産/ JavaScriptの/

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

をapplication.jsものがレール・サーバを実行しているときすべてが正常に動作していることである、とjQueryは、(適切にロードされ、私はそれをテストしましたブラウザのコンソール)。

テストで何が起こっているのか考えてみましょうか?

EDIT

は、私は、カスタム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/フォルダ内にある与えられました。

そして、これは私がこの問題を修正終わったものですテスト

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

アプリの珍しい場所のため、アプリのルートが正しく検出されない可能性があります。カスタムの「Capybara.app」を設定する必要があるかもしれません - Capybaraがデフォルトをどのように定義しているかを見てください - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/rails.rb –

+0

@ThomasWalpoleしかし、私はまだそれを動作させることはできません。私はちょうどあなたの入力を使用して、より多くの情報を追加しました、あなたは私の編集を見てみることができますか? –

+0

これは公開アクセス可能なレポですか? (私はrubygems.orgでfantasticと呼ばれる宝石は見ません) –

答えて

6

を実行したときに私が取得エラーです。

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

    isolate_namespace Megaphone 
    end 
end 
関連する問題