2011-10-22 4 views
3

"Learn Rails by Example"책을 통해 다음 테스트를 실행하려고합니다. 어떤 이유로 rspec이 제대로 작동하지 않습니다.ruby ​​on rils rspec error

$ rspec spec/ 
/home/desktop/.rvm/gems/ruby-1.9.2-p136/gems/bundler-1.0.21/lib/bundler/runtime.rb:31:in `block in setup': 
You have already activated rspec-core 2.7.1, but your Gemfile requires rspec-core 2.6.4. 
Using bundle exec may solve this. (Gem::LoadError) 

이상한 것은 내가 따르는 경우

group :development do 
    gem 'rspec-rails' 
end 

group :test do 
    gem 'rspec' 
    gem 'webrat' 
end 

version-- 지정하지 않은 내 Gemfile입니다 : 그가 지시로 내가 rspec spec/ 명령을 실행하면

, 나는 다음과 같은 오류가 오류 메시지의 조언을 사용하고 bundle exec rspec spec/을 사용하면 처음 두 테스트는 통과됩니다. 그러나 우리가 튜토리얼에서 작성한 새로운 "about"페이지가 다음 오류와 함께 실패합니다. 및 컨트롤러 동작 등)은 정확히 t 헤이해야한다 :

Failures: 

    1) PagesController GET 'about' should be successful 
    Failure/Error: response.should_be_success 
    NoMethodError: 
     undefined method `should_be_success' for #<ActionController::TestResponse:0x00000003539438> 
    # ./spec/controllers/pages_controller_spec.rb:23:in `block (3 levels) in <top (required)>' 

Finished in 0.10861 seconds 
3 examples, 1 failure 

Failed examples: 

rspec ./spec/controllers/pages_controller_spec.rb:21 # PagesController GET 'about' should be successful 

나는 꽤 숙련 된 프로그래머 해요하지만 난 예 (레일을 사용하여 모든 다른 작업을 수행하기 위해 충돌 보석 버전과 백 개 다른 방법으로 끝없는 문제로 실행했습니다. "RVM 사용", "RVM 사용 금지", "sudo를 사용하여 보석 설치", "sudo를 사용하여 보석 설치 금지"등)

내 컴퓨터에서 우분투 리눅스를 실행 중입니다.

어떤 도움을 주셔서 감사합니다. 내가 Ruby noob 언어로 잘못하고 있다면 설명해주십시오!

답변

6

bundle exec을 실행하는 것이 정확하며, Gemfile.lock에 지정된 버전 대신 최신 버전의 gem이 설치되어로드해야하므로 필요합니다. bundle exec을 사용하면로드 경로가 무시되어 Gemfile.lock에 지정된 보석 만로드됩니다. (당신은 짧은 뭔가 별칭 bundle exec하기가 편리 찾을 수 있습니다.)

두 번째 문제에 대한 답은 오류 메시지에 적합한 :

undefined method `should_be_success' 

should be_success을해야합니다.

+0

감사합니다. Andrew! 나는 그 오류를 놓쳤다. 이제는 모두 작동하는 것 같습니다. "적절한"rspec gem이 설치되도록 Gemfile.lock을 업데이트하는 방법이 있습니까? – julio

+0

'bundle 번들 '을 실행하면 모든 젬을 의존성 트리에서 가능한 한 최신 버전으로 업데이트 할 것이고,'bundle update rspec'는 지정된 젬에 대해서만 그렇게 할 것입니다. 수동으로 잠금 파일을 갱신해서는 안됩니다. –

+0

완벽! 도와 줘서 고마워. – julio