나는 얼마 전에 내가 현재 확장하고있는 매우 지저분한 Rails 애플리케이션을 가지고있다. 이것은 Ruby 버전 (1.9.x에서 2.3.x), Rails 버전 (3.2.x에서 5.0.x) 및 기타 많은 관련 변경 사항에 대한 많은 주요 변경 사항을 포함합니다. 그것은 많은 벼랑을 가지고 있으며, 나는 그 순간에 많은 일들에 관해서 불확실합니다.rspec 테스트에서 javascripts/sessions.js로 요청을 보내는 이유는 무엇입니까?
이 끔찍한 혼란을 해결하기 위해 나는 RSpec과 Capybara로 여러 가지 기능 테스트를 작성하기로 결정했습니다. Javascript를 사용하는 무언가를 테스트 할 때까지 좋은 진행을하고있었습니다. (결국 대부분의 테스트는 Javascript를 테스트 할 것입니다.)
내 Rspec 테스트는 지금까지 이와 비슷하게 보입니다 (완료해야 할 부분이 많이 남아 있습니다 - 방금 여기에서 붙어 있습니다). 내 응용 프로그램이 등록 번호를 조회하고 고객이 이전에 등록되었는지의 여부에 따라 폼에 추가 필드를 추가하는 자바 스크립트의 일부를 반환하는 AJAX 호출을 트리거에서
feature "User registers a new customer", js: true do
scenario "Logged in user registers a new customer" do
user = FactoryGirl.create(:user)
visit_root_and_login user
fill_in 'reg_number', with: '123456'
click_button 'Look up'
end
end
.
그래도 어떻게 되나요?
Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
ActionController::RoutingError:
No route matches [GET] "/javascripts/sessions.js"
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:36:in `call_app'
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:24:in `block in call'
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:24:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/method_override.rb:22:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/runtime.rb:22:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/sendfile.rb:111:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/engine.rb:522:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/urlmap.rb:68:in `block in call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `each'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/capybara-2.12.1/lib/capybara/server.rb:43:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/handler/webrick.rb:86:in `service'
# ------------------
# --- Caused by: ---
# NameError:
# uninitialized constant Selenium::WebDriver::Remote::W3CCapabilities
# /Users/brad/.gem/ruby/2.3.1/gems/capybara-2.12.1/lib/capybara/selenium/driver.rb:282:in `marionette?'
나는 다른 어떤 일이 약간 다른 무언가를 가지고 있는지 확인하기 위해 driver: :webkit
을 추가하는 시도;
Failure/Error: raise ActionController::RoutingError, "No route matches [#{env['REQUEST_METHOD']}] #{env['PATH_INFO'].inspect}"
ActionController::RoutingError:
No route matches [GET] "/javascripts/sessions.js"
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:36:in `call_app'
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:24:in `block in call'
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/rack/logger.rb:24:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/method_override.rb:22:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/runtime.rb:22:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/sendfile.rb:111:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/railties-5.0.1/lib/rails/engine.rb:522:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/urlmap.rb:68:in `block in call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `each'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/urlmap.rb:53:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/capybara-2.12.1/lib/capybara/server.rb:43:in `call'
# /Users/brad/.gem/ruby/2.3.1/gems/rack-2.0.1/lib/rack/handler/webrick.rb:86:in `service'
# ------------------
# --- Caused by: ---
# Capybara::ElementNotFound:
# Unable to find field "reg_number"
# /Users/brad/.gem/ruby/2.3.1/gems/capybara-2.12.1/lib/capybara/node/finders.rb:44:in `block in find'
왜 "/javascripts/sessions.js"가 호출되는지 이해할 수 없습니다. 그러한 파일이 없기 때문에 본인 스스로 요청하지 않습니다. Rack에서 오는 것처럼 보입니다. 그러나 이것은 제가 정말로 이해하지 못하는 Ruby와 Rails 세계의 영역입니다.
누구도이 부분에 어떤 표시를 할 수 있습니까? 그래서 나는 적어도 어디에서부터 시작해야하는지 알고 있습니까?
TIA
'레이크 에셋 : clobber'을 사용해 볼 수 있습니까? – fabersky
모양을 가져 주셔서 감사합니다. 아무것도 바뀌지 않았습니다. – brad