2009-05-07 3 views
2

컨트롤러를 테스트하기 위해 Test :: Unit with shoulda를 사용하고 있습니다.컨트롤러를 테스트 할 때 렌더를 사용하지 않음

컨트롤러를 테스트 중이므로 렌더링 할보기를 원하지 않습니다.

일부 객체를 스터 빙하고 있는데, 컨트롤러가 올바르므로 뷰가 렌더링 될 때 오류가 발생하지만 테스트가 실패하지 않아야합니다.

내 테스트에서 템플릿/뷰 렌더링을 사용하지 않도록 설정하는 방법은 무엇입니까?

rSpec이 이와 같이 작동한다고 들었습니다.

답변

5

모카를 사용하는 경우 쉽습니다. 개별 테스트 또는 설정 방법이 추가 :

@controller.expects(:render) 

당신이, 음, 모카를 사용하지 않는 경우. 당신의 test_helper.rb에서 다음

gem install mocha 

require 'mocha' 
-1

테스트에서 실제로 어떤 뷰도 보지 않아야합니다. 실패한 테스트 코드를 게시 할 수 있습니까? 컨트롤러 (기능적) 테스트는 작업이 호출 될 때 특정 작업이 수행되고 있는지 확인해야합니다. 즉, 올바른보기를 렌더링하거나 다른 작업으로 리디렉션되는지 확인해야합니다. 보기의 플래시 또는 다른 변수의 설정을 확인할 수도 있습니다. 이것이 당신이 테스트하고있는 유형입니까?

class UsersControllerTest < Test::Unit::TestCase 
    context "on GET to :show" do 
    setup { get :show, :id => 1 } 

    should_assign_to :user 
    should_respond_with :success 
    should_render_template :show 
    should_not_set_the_flash 

    should "do something else really cool" do 
     assert_equal 1, assigns(:user).id 
    end 
    end 
end 

어쩌면 꽤 좋은 rails guides를 살펴 :

다음은 했어야 워드 프로세서에서 가져온 GET 요청과 함께 show 액션을 테스트의 좋은 예입니다.