2013-02-04 5 views
6

레일스 앱에 대한 자세한 rspec 카피 바라 통합 및 유닛 테스트를 완료했습니다. 여기에는 Omniauth (twitter) 로그인을 조롱하고 양식을 채우고 데이터 유효성 검사 등이 포함됩니다. 별도의 컨트롤러 또는 기능 테스트를 작성할 필요가 있습니다. 귀하의 요청 (통합) 사양은 당신이 덮여있어 모든 코드 경로를 운동하는 경우 레일 rspec 컨트롤러 테스트 대 통합 테스트

는 귀하의 의견 등 개인적으로

답변

6

더 독서에 대한 링크 감사하겠습니다, 나는 생각한다. Ryan Bates는 그가 여기에서 시험하는 방법에 관해 큰 Railscast를 가지고있다 : http://railscasts.com/episodes/275-how-i-test?autoplay=true와 약 5:05 그는 유사한 물건을 말한다. 당신처럼 나는 컨트롤러 스펙보다는 통합 테스트를 쓰고 싶다. 어쨌든 대부분의 시간 컨트롤러는 CRUD 유형의 작업을 앞당기는 것입니다 (특히 컨트롤러에서 도메인 로직을 유지하는 데주의를 기울이는 경우 특히 그렇습니다). 따라서 테스트중인 모든 것은 스캐 폴딩입니다.

+0

귀하의 의견을 기다립니다. – user937531

10

나는이 의견으로 소수에 속한다는 것을 알고 있기 때문에 여기에서 악마의 옹호자를 플레이 할 것이다. 나는 실제로 컨트롤러 테스트를 철저히하는 것을 선호한다. 몇 가지 이유 :

1) 컨트롤러 수준에서 통합 테스트 수준보다 모든 경로와 결과를 체계적으로 테스트하는 것이 더 쉬운 것으로 나타났습니다. 통합 테스트는 기본적으로 단순한 경로이며 가장 일반적인 오류 경로 중 일부입니다.

2) 컨트롤러 수준에서 많은 보안 문제가 발생합니다. 철저한 테스트를 통해 악의적 인 무언가가 내 모델 논리를 통과 할 수 없도록 보장합니다.

3) 이것은 주관적이지만 실제로 내 응용 프로그램이 통과 할 수있는 길쭉한 길에 대해 생각하게 만듭니다. 다른 사람이 잘못된 비밀번호 재설정 토큰을 URL에 넣으려고하면 어떻게됩니까? 컨트롤러 테스트를 통해 모든 옵션을 고려할 수 있습니다.

4) 통합 테스트와 달리 테스트가 상당히 간단합니다. 각각의 액션은 루비 메서드입니다!

관련 문제