2012-12-29 7 views
4

RSpec (2.12 on Rails 3.2.8)으로 뷰를 테스트하고 있습니다. CanCan을 사용하여 페이지의 특정 요소를 조건부로 표시합니다. 이를 위해서는 컨트롤러 메소드 'current_user'가 필요합니다. 일부 사양에서는 current_user를내어 쓸 수있었습니다. controller.stub (: current_user) .and_return (등) 또는 view.stub.etc.rspec 뷰 스텁 및 부분 부분

일부 사양이 작동합니다. 그러나 나는 그것이 작동하지 않는 한 쌍을 가지고 있는데 나는 왜 그런지 이해하지 못합니다.

부분적으로 호출하는보기를 테스트하는 두 가지 사양과 부분적으로는 'current_user'를 메서드로 액세스합니다. 이 오류는

undefined local variable or method `current_user' 

그래서 나는 내 질문들이 내부 파셜을 액세스 할 수 있도록 올바르게 방법을 스텁 어떻게 생각입니다.

어떻게해야합니까?

답변

9

컨트롤러를 테스트 중이 아니기 때문에 컨트롤러 스텁이 작동하지 않습니다. 뷰를 테스트하고있는 것입니다. 대신 뷰 스텁을 사용하십시오.

view.stub(:current_user).and_return(etc) 

이것은보기에서뿐만 아니라보기에서도 작동합니다.

참조 : 내가 시도 처음 일을했지만, 그것은 작동하지 않았다

+0

passing view spec that stubs a helper method, 그래서 내가 controller.stub을 시도하고 그 중 하나가 작동하지 않았다. 이제 나는 신비화되었습니다. 내가 view.stub (등) 얻을 수있는 경우에만 작동하도록 테스트되고있는 한 수준보기입니다. 뷰가 부분을 호출하면 (자), 메소드는 부분적으로 사용할 수 없습니다. –

+2

아! 나는 그것을 밖으로 일했다, 나는 view.stub (: current_user) 및 controller.stub (: current_user)를 둘 다 가질 필요가있다. 뷰에서 current_user에 대한 참조는 view.stub로 이동하고 CanCan 기능 클래스 내의 current_user에 대한 참조는 모두 controller.stub로 이동합니다 –