2011-03-28 1 views
3

을 테스트하기 위해 나는 네비게이션 메뉴로 모든 범주를 나열 레일 3 부분이있다. 내가 실제보기에 Categories.all를 호출하고있어, 순간레일/RSpec에 조회수 : - 그것은 대부분에,하지만 내 템플릿 페이지의 모든 ...의 약 75 %를 가정 해 봅시다 올바른 방법은 파셜

: 지금은 (RSpec에에) 부분을 테스트하기 위해 노력하고있어, 난 그냥 몇 가지를 깨달았다. 어려움은 그 데이터베이스를 접촉하기 때문에, 내 모의 객체가/뷰 스펙 스텁은 무시되고, 결과적으로 테스트가 실패한다는 것입니다. I는 대안 같은데요

은 애플리케이션 제어기 변수를 할당하고, 그 부분에 대한 로컬 변수로 전달하는 것이다. 그럼에도 불구하고, 내 페이지의 약 25 %가 변수를 사용하지 않으며 일을 더 우아한 방법이 있는지 궁금하네요.

간단히 말해서, 테스트 DB를 건드리지 않고 뷰 스펙을 전달하려고하지만 부분 변수에 전달 된 전역 변수가 최선의 방법인지 확신 할 수 없습니다. 변수를 선언하지 않습니다. 그것을 요구하는 모든 (& 만)하는 컨트롤러이다.

의견이 있으시면 ...

+0

접촉되지 않습니다. spec 파일의 코드 스 니펫과 뷰를 보는 것도 도움이 될 것입니다. – Ivan

답변

2

왜 모든 카테고리에 대해 도우미 메서드를 만들지 않으시겠습니까?

 
    # in categories helper 

def all_categories 
    @all_categories ||= Category.all 
end 

또는 ...

 
# application controller 

helper_method :all_categories 

def all_categories 
... 

당신은 다음 사양에서이 방법을 스텁 수 있으며, 당신은 내가 너무이 문제를 가지고있는 DB