2012-09-05 5 views
10

필자는 모델 또는 컨트롤러에서 일반적으로하는 것처럼 디버깅 문제를 테스트하고 새로운 것을 경험했습니다.RSpec에서 어떻게 디버깅을 더 잘 할 수 있습니까?

FactoryGirl을 사용하여 차이를 만드는 경우 팩토리에서 사용자를 생성 했으므로 저장시 유효성 검사 때문에 create 메소드가 실패했다는 것이 확실합니다. 그러나 테스트하는 동안 인스턴스화 된 모델을 디버깅하는 방법을 알고 싶습니다.

나는 시도했다 :

user.inspect 
puts user 
raise user.to_yaml 

(후자의 작품,하지만 내 시험의 나머지 부분의 실행을 중지하고 유효성 검사 오류를 표시하지 않습니다 - 그것은 단지 존재 또는 비 존재를 증명 모델을 인스턴스화하려고 시도했습니다.)

모델을 오류로 발생시키는 것 이외에는 테스트 중에 디버그 출력이 없으며 수행 할 수 있었던 유일한 작업은 테스트 데이터베이스의 로그를 출력하는 것입니다. 거기에서 무슨 일이 일어나는지 보지만, 기껏해야 어설픈 것처럼 보입니다. 내가 한 일을 성취하기 위해 어떤 방법을 제안 하시겠습니까?

은 어떤 방향 주셔서 감사합니다

답변

2

체크 아웃 플리머스 : 테스트가 실패 할 때 그것은 PRY 작동 https://github.com/banister/plymouth

당신에게 좋은 REPL & 디버깅 인터페이스를 제공합니다. 나는 그것을 몇몇 프로젝트에서 사용했고 테스트에서 애매한 문제에 대해 매우 편리하다는 것을 알았다.

쪽 사용자

:
+1

thanks @agmcleod. 플리머스는 최소한 오류에 대한 자세한 내용을 보여주는 데는 좋아 보이지만 거기에 모델 인스턴스화를 디버깅 할 방법은 없습니다. – jbnunn

+1

나는 플리머스의 개념을 좋아한다! 내가 그것을 시험해보기 전에, 누군가는 유지되는 버전에 대해 알고 있는가? 편집 : "pry - rescue를 사용하여, 플리머스의 영적 후계자 :" –

0

binding.pry을 테스트에 추가하면 언제든지 pry 세션을 열 수 있습니다. 그렇게하면 테스트의 정확한 지점 (및 원할 경우 다른 곳)에서 사용할 수있는 것이 무엇이든지 액세스 할 수 있습니다. pry를 Rails에 추가하는 방법에 대한 자세한 정보는 official Pry wiki

관련 문제