2011-03-22 3 views
0

나는 rspec으로 작성된 컨트롤러/뷰 테스트를 결합한 묶음이있다. 카피 바라 보석을 추가하고 잘 통과하는 통합 테스트를 작성했습니다.Capybara 설치 후 컨트롤러 테스트가 끊어 졌습니까?

NoMethodError: 
     undefined method `has_selector?' for #<ActionController::TestResponse:0xa03e7ec> 

내가 컨트롤러를 실행하면 유일한 문제는 지금은

response.should의 have_selector ("어떤 선택을")이 내 모든 컨트롤러 테스트에

RSpec에 같은 오류를 준다이다 테스트. Capybara가 컨트롤러 테스트에서 사용되고 있고 일부 Rspec 메서드를 덮어 쓰고있는 것 같습니다. 이 문제를 어떻게 해결할 수 있습니까?

# gemfile.rb 
group :test do 
    gem 'rspec' 
    gem "capybara" 
    gem "launchy" 
    gem 'factory_girl_rails', '1.0' 
end 

# spec_helper.rb 
RSpec.configure do |config| 
    config.include IntegrationSpecHelper, :type => :request 
end 

는 여기 실패한 테스트의 예 :

# spec/controllers/books_controller_spec.rb 
require 'spec_helper' 

describe BooksController do 
    render_views 

    it "should have the right page title" do 
    get :show, :id => @book.ean 
    response.should have_selector("title", :content => "Lexicase | " + @book.title) 
    end 
end 

과 오류 연관된 : 당신은 아마 이전 Webrat을 사용하고

1) BooksController GET 'show' should have the right page title 
    Failure/Error: response.should have_selector("title", :content => "Lexicase | " + @book.title) 
    NoMethodError: 
     undefined method `has_selector?' for #<ActionController::TestResponse:0xa8488c0> 
    # ./spec/controllers/books_controller_spec.rb:23:in `block (3 levels) in <top (required)>' 
+0

실패한 테스트를 추가 할 수 있습니까? – shingara

+0

원래 게시물을 업데이트했습니다. –

답변

2

has_selector를?은 Webrat matcher입니다. 카피 바라스에는 has_selector 정규 표현식이 없으며 has_css이라는 정규 표현식이 있습니다. "has_selector"를 "has_css"로 바꿀 수도 있습니다.

+1

어쨌든 우리는 Webrat에 대해 옳습니다. 내가 말할 수있는 한, has_selector가 있습니까? 메소드 (http://rubydoc.info/github/jnicklas/capybara/master/Capybara/RSpecMatchers)에 있지만 요청 메소드가 아닌 페이지 메소드에 있습니다. 또 다른 것은 내가 webrat과 같이 할 수있는 것처럼 "get : show"를 사용할 수 있다고 생각하지 않는다는 것입니다. 대신 방문 (book_path (@ book.ean))을 사용해야합니다. 그러나 방문은 설계 요청에 의해서만 요청을 발행 할 수 있으므로 컨트롤러 장치 테스트에 적합하지 않습니다. 여기에 실종 된 큰 문제가 있습니다. –

+1

lol 음, Capybara와 Webrat은 내가 원래 생각한 것처럼 상호 배타적이지 않다는 것이 밝혀졌습니다. 문제가 해결되었습니다. –

+3

블로거가 Capybara를 Webrat의 드롭 인 대체품이라고 부르지 않거나 코드에 필요한 변경 사항이있는 문장을 최소한으로 제한하기를 바랍니다. 나는 스위치를 만든 후 내 코드를 작동시키기 위해 사소한 변경을 많이해야했다. –

1

Capybara 도우미는 요청 사양에서만 작동합니다. 어느 새 요청 스펙을 만들거나에서 통과 : 유형 => 다음 설명 블록 부분에 요청, 그래서 같은 :이 질문은 오래 전에 질문을 받았다 실현

describe "test for the testing test", :type => :request do 
    it "should work with capybara" do 
    visit root_path 
    click_link "Home" 
    page.should WHATEVA 
    end 
end 

,하지만 난 어쨌든 공유 할 것이라고 생각 . GLHF

관련 문제