the normal fashion에 Rails 엔진을 만들고 RSpec을 설치했으며 모델에 대한 스캐 폴드를 생성했지만 라우팅 사양을 전달할 수 없습니다.모든 라우팅 예제가 RSpec 2.10이 설치된 Rails 3.2 엔진에서는 실패합니다.
describe Licensing::LicensesController do
it 'routes to #index' do
get('/licensing/licenses').should route_to('licensing/licenses#index')
end
end
이 같은 더미 응용 프로그램의 예제를 실행 해요 :
$ cd spec/dummy
$ rake spec
/Users/brandan/.rvm/rubies/ruby-1.9.3-p194/bin/ruby -S rspec ../routing/licensing/licenses_routing_spec.rb
F
Failures:
1) Licensing::LicensesController routes to #index
Failure/Error: get('/licensing/licenses').should route_to('licensing/licenses#index')
No route matches "/licensing/licenses"
# /Users/brandan/repos/licensing/spec/routing/licensing/licenses_routing_spec.rb:5:in `block (2 levels) in <top (required)>'
Finished in 0.04345 seconds
1 example, 1 failure
엔진은 더미 응용 프로그램에 올바르게 장착 :
# spec/dummy/config/routes.rb
Rails.application.routes.draw do
mount Licensing::Engine => "/licensing"
end
여기에 하나의 예입니다
그리고 나는 더미 응용 프로그램에 들어가서 콘솔을 작동시켜 그 경로를 올바르게 얻을 수 있습니다 :
1.9.3p194 :001 > app.get('/licensing/licenses')
Licensing::License Load (0.3ms) SELECT "licensing_licenses".* FROM "licensing_licenses"
200
1.9.3p194 :002 > app.response.body
"<!DOCTYPE html>..."
더미 응용 프로그램과 RSpec간에 약간의 차이가 있으며 그게 무엇인지 알 수 없습니다. 나는이 문제를 해결하기 위해 주장 몇 가지 기사를 발견했지만, 그들 중 누구도 도왔으며, 그들 중 일부는 레일에 특정 3.1 :
- Ryan Bigg's article on generating and testing engines
- Matthew Ratzloff's article on testing engine routes in Rails 3.1
- Stefan Wienert's article on mountable engines
- A mailing list message about testing routing helpers in Rails 3.2
레일리스 3.2/RSpec 2.10에서이 문제를 해결 한 사람이 있습니까?
나는 당신이 당신의 엔진을 통합하는 더미 응용 프로그램에 대해 테스트하고 있으리라 믿고있어 : 여기
는이 주제에 대한 좋은 스레드의 또 다른 부부. 엔진이 더미 응용 프로그램의 경로에 마운트되어 있습니까? 만약 그렇다면, 당신의 스펙은': type => : routing'입니까? –@ TanzeebKhalili 나는 콘솔과 브라우저에서 작동하기 때문에 라우트가 정확하다고 확신한다. 난 더미 애플 리케이션 내에서 사양을 실행 중입니다. 파일은'spec/routing'에 있고': type => : routing'을 명시 적으로 지정해도 예제가 통과되지 않습니다. 더 이상 아이디어가 없습니까? :/ – Brandan
다음과 같이 변경하는 방법 : 1) 설명 된 다른 객체 : 경로 "do ..."및 2) 다른 구문 : '{: get =>'/ licensing/licenses '}. beouldro_routable' –