asc*_*man 12 rspec ruby-on-rails capybara poltergeist
我有一个名为" 神奇 " 的宝石,里面有一个虚拟应用程序来测试.在运行虚拟应用程序时,一切运行良好.
但是,当我运行测试时,单元测试工作正常,但集成测试(Capybara + Poltergeist)失败并显示以下消息:
Sprockets :: FileNotFound:找不到类型为'application/javascript'的文件'jquery'.
检查这些路径:
/ 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
# ...
s.add_development_dependency "capybara"
s.add_development_dependency "poltergeist"
s.add_development_dependency "jquery-rails"
# ...
Run Code Online (Sandbox Code Playgroud)
规格/虚拟/应用/资产/ JavaScript的/ application.js中
//= require jquery // Error is produced in this line
//= require jquery_ujs
//= require fantastic
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
问题是当运行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
Run Code Online (Sandbox Code Playgroud)
鉴于虚拟应用程序在spec/dummy/
文件夹中.
这是我运行测试时得到的错误
失败/错误:期望(页面).to_content"用户"希望在"未找到:/ users"中找到文本"Users".(但是,使用不区分大小写的搜索发现了一次.)#./ spec /features/record_updated_spec.rb:6:在'块(2级)中'
这就是最终解决问题的方法.
module Fantastic
class Engine < ::Rails::Engine
require 'jquery-rails' # <-- this line
isolate_namespace Megaphone
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
277 次 |
最近记录: |