1
Selenium을 사용하는 Rails 3.2 앱에서 jQuery 자동 완성을 테스트하려고합니다. this blog post 다음 나는이처럼 보이는 fill_autocomplete
도우미 메서드를 만들었습니다
Failure/Error: fill_autocomplete 'crop', with: 'm'
Selenium::WebDriver::Error::JavascriptError:
$ is not defined
문제 라인은 page.execute_script %Q{ $('##{field}').trigger('focus') }
입니다 : 내가 RSpec을 실행하면
def fill_autocomplete(field, options = {})
fill_in field, with: options[:with]
page.execute_script %Q{ $('##{field}').trigger('focus') }
page.execute_script %Q{ $('##{field}').trigger('keydown') }
end
,이 오류가 발생합니다
spec_helper.rb
Gemfile의 5,ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'rspec/autorun'
require 'coveralls'
require 'simplecov'
require 'capybara'
include Warden::Test::Helpers
SimpleCov.configure do
add_filter 'spec/'
end
Coveralls.wear!('rails')
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
config.fixture_path = "#{::Rails.root}/spec/fixtures"
config.use_transactional_fixtures = true
config.infer_base_class_for_anonymous_controllers = false
config.order = "random"
config.include Devise::TestHelpers, :type => :controller
config.extend ControllerMacros, :type => :controller
end
개발/테스트 그룹
내가 RSpec에, 카피 바라, 그리고 셀레늄 - Webdriver을 다운 그레이드하려고했습니다group :development, :test do
gem 'haml-rails'
gem 'rspec-rails', '~> 2.12.1'
gem 'webrat'
gem 'capybara', '~> 2.4.1'
gem 'selenium-webdriver', '~> 2.42.0'
gem 'factory_girl_rails', '~> 4.0'
gem 'coveralls', require: false
end
. Selenium 대신 Capybara-Webkit을 사용해 보았습니다. 모두 소용 없다.
jQuery 자동 완성이 'keydown'이벤트에 연결되고 Capybara의 fill_in
이이 이벤트를 자체적으로 트리거하지 않는다는 가정하에 작업했습니다. 이 올바른지?
모든 해결책이나 해결 방법을 환영합니다. 감사!
'$'에 매핑 된 jQuery가없는 것처럼 들립니다. 이를 입증하기 위해 테스트를 해보십시오 : 스크립트가 실행될 때까지 ** 자동 테스트를 실행하십시오. 일단 시험을 중단하십시오. 이제 Chrome/Firefox의 개발 도구를 열고 ** 동일한 스크립트를 수동으로 실행하십시오. ** 이론 상으로는 같은 오류가 발생합니다. 그렇다면 단지'$'가 항상'jQuery'에 매핑되지 않을 것이기 때문입니다 (그리고 항상 그렇게 생각하는 것은 매우 잘못되었습니다). – Arran
디버깅 조언 덕분에 JQuery가 정의되기 전에 JS에서 오류가 발생했다는 것을 알 수있었습니다. – niftygrifty