2014-11-02 5 views
0

논리를 모델로 이동하여 컨트롤러를 리팩토링합니다. 컨트롤러가 너무 많은 로직을 가지고있을 때 (컨트롤러의 로직을 재사용 할 수 없음) 컨트롤러 테스트 방법을 찾기가 어려웠습니다. 이제이 컨트롤러에 대한 사양을 작성하는 방법을 알고 싶습니다. this testing guide을 팔로우하고 있습니다.모델 메서드를 호출하는 컨트롤러 메서드를 테스트하기위한 사양

다음은 예입니다 :

def dashboard 
    @sorted_deals = Deal.deals_for_user(current_user) 
end 

이는 관련 거래를 찾아 적절하게 정렬 몇 가지 논리가 클래스 메소드를 호출합니다. 그것은 deals_for_user을 다시 테스트하기 위해 중복되지 않은 느낌이 듭니다. (이미 모델 스펙에서 테스트했습니다.) 불필요한 중복없이이 방법을 테스트하려면 어떻게해야합니까? 모의 (mock) 또는 스텁 (stub)을 사용하는 경우입니까?

답변

0

레일즈에서 컨트롤러 테스트의 유용성에 대한 몇 가지 논쟁이 있습니다. 개인적으로 나는 내 모델에서 똥을 단위 테스트하고 컨트롤러에 대해서만 수행 할 수있는 유일한 실제 테스트는 capybara가 포함 된 Selenium과 같은 헤드리스 브라우저를 사용한 통합 테스트입니다. 자신의 방법이 작동하고 테스트되고 뷰/관련 로직이 작동하고 통합 테스트를 통해 테스트되는 경우 컨트롤러 테스트는 거의 시간 낭비입니다. 이것에 대한 다른 견해가 있으며 저는 전문가가 아니지만 제 돈 $ 00.02를 넣을 것이라고 생각했습니다.

+0

나는 동의 할 의향이있다. – settheline

관련 문제