2013-01-05 3 views
5

테스트 용으로 Webkit과 함께 Capybara를 사용하고 있지만 테스트가 실패 할 때 어떤 이유로 오류가 표시되지만 실제로 코드에서 발생하지는 않습니다.RSpec/Capybara에 오류가 발생한 위치가 표시되지 않는 이유

Failures: 

    1) online shopping - sign up 
    Failure/Error: page.should have_content 'Payment added successfully' 
     expected there to be content "Payment added successfully" in "Internal Server Error undefined method `client_id' for #<InvoicePayment:0x007fbd5b834008> WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) at 127.0.0.1:60324" 
    # ./spec/requests/online_shopping_spec.rb:140:in `block (2 levels) in <top (required)>' 

하고 발생한 장소에 대한 정보는 없음으로, 그냥 오류를 보여주지 save_and_open_page를 사용하여 :

내부 서버 오류

정의되지 않은 방법은 '# 에 대한'CLIENT_ID에 WEBrick/1.3.1 (Ruby/1.9.3/2012-04-20) at 127.0.0.1:60324

예상되는 내용은 줄 번호입니다.

응용 프로그램/컨트롤러/invoices_controller.rb : 30 :`쇼 '나는 구글에 관련된 아무것도 찾을 수 없습니다

에 오류가 발생 R과 기능. 아마도 잘못된 명명법을 사용하고있을 것입니다. 아무도이 문제를 해결하는 방법을 알고 있습니까?

+0

아마도 이동했을 것입니다.하지만 해결책을 찾았습니까? 나는 같은 문제가있어서 해결책을 찾지 못한다. – lnreddy

+0

아 .. 방금 js : true를 입력하면 정확한 오류 추적이 표시되지 않는다는 것을 알았다. js : true를 제거하면 오류가 발생한 정확한 행이 표시됩니다. – lnreddy

답변

7

기본적으로 카피 바라는 다른 프로세스에서 실행 중이기 때문에 앱에 대한 지식이 없습니다. 여기서 설명하는 트릭을 사용하면이 문제를 해결할 수 있습니다 https://gist.github.com/1443408

+0

감사합니다. 링크가 유망 해 보입니다. –

3

문제는 실제 페이지가 오류로 렌더링되지 않고 대신 내부 서버 오류가 발생한다는 것입니다. 따라서 Internal Server Error undefined method...은 테스트중인 페이지의 내용 인입니다. RSpec/Capybara는 테스트 프레임 워크가 페이지에서 실제로 무엇을 보았는지만을 테스트하기 때문에 발생하는 위치를 알려 줄 수 없으며 정확히 그 내용을 볼 수 있습니다 (save_and_open_page을 실행했을 때 확인했듯이).

오류를 추적하려면 레일 오류 로그 또는 실행중인 콘솔/터미널을 확인해야합니다. 더 많은 정보가 없으면 오류를 추적하는 데 도움이되지 않습니다.

희망이 있습니다.

+0

이상한 점은 내가 작업하고있는 다른 응용 프로그램에서 말 그대로 터미널에서 줄 바꿈 번호가 나옵니다. –