2017-09-12 22 views
12

Tôi có một viên ngọc được gọi là "" tuyệt vời "với ứng dụng giả giả bên trong để kiểm tra. Khi chạy ứng dụng giả, mọi thứ hoạt động tốt.Kiểm tra tích hợp Gem thất bại với jQuery không tìm thấy

Tuy nhiên, khi tôi chạy thử nghiệm, kiểm tra đơn vị hoạt động tốt, nhưng các xét nghiệm hội nhập (Capybara + Poltergeist) thất bại với thông điệp:

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

Một số tác phẩm của tôi:

fantastic.gemspec

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

đặc tả/giả/app/tài sản/Javascripts/application.js

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

Điều được rằng khi chạy ray máy chủ tất cả mọi thứ hoạt động tốt, và jQuery được nạp đúng cách (Tôi đã thử nghiệm nó trong giao diện điều khiển của trình duyệt).

Bất kỳ ý tưởng nào về những gì đang xảy ra trên các thử nghiệm?

EDIT

Tôi đã cố gắng tạo ra một tùy chỉnh Capybara.app:

đặc tả/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 

Với ứng dụng giả là trong spec/dummy/ thư mục.

Và đây là lỗi tôi nhận được khi tôi chạy thử nghiệm

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

Do vị trí bất thường của ứng dụng của bạn, có khả năng gốc ứng dụng không được phát hiện chính xác. Bạn có thể cần phải đặt tùy chỉnh 'Capybara.app' - xem cách Capybara định nghĩa mặc định - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/rails.rb –

+0

@ThomasWalpole Cảm ơn sự giúp đỡ của bạn nhưng tôi vẫn không thể làm được. Tôi vừa thêm thông tin khác, đã sử dụng dữ liệu nhập của bạn, bạn có thể xem bản chỉnh sửa của tôi không? –

+0

Đây có phải là repo có thể truy cập công khai không? (Tôi không thấy một viên ngọc được gọi là tuyệt vời trong rubygems.org) –

Trả lời

6

Đây là những gì đã kết thúc khắc phục vấn đề.

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

    isolate_namespace Megaphone 
    end 
end 
Các vấn đề liên quan