2010-05-29 3 views
5

난 내 레일 애플 리케이션을위한 일부 비계를 생성했습니다.기능 테스트가 실패하는 이유는 무엇입니까?

생성 된 테스트를 실행하고 있는데 실패했습니다. 예

test "should create area" do 
    assert_difference('Area.count') do 
     post :create, :area => { :name => 'area1' } 
    end 

    assert_redirected_to area_path(assigns(:area)) 
    end 

이 테스트 실패한 것을 말하고 :

1) 실패 : test_should_create_area (AreasControllerTest) [/test/functional/areas_controller_test.rb:16] "Area.count"는 1에 의해 변경되지 않았습니다. < 3> 이 (가) < 2>입니다.

모델에는 이름 필드가 하나뿐입니다. 나는이 필드를 채우고 있기 때문에 유일한 필드를 채우지 못하기 때문입니다.

사이트를 실행하고 이름이 'area1'인 영역을 만들 수 있습니다. 현실은 성공하지만 시험은 실패합니다.

이유가 무엇인지 여기에서 알기에 충분한 정보가 없기 때문에 나는 그 실패 이유를 묻지 않습니다. 나는 시험이 실패하는 이유를 찾기 위해 어떤 길로 내려가는 지 알면서 막혔다. 심지어 코드를 퍼팅하지 않아도 출력됩니다 ...

이 단계를 추적하려면 어떤 단계를 거쳐야합니까?

+0

여기서 test.log의 출력이 도움이 될 것입니다. 따라서 실제로 생성되는 영역이 있는지 또는 먹는 SQL 오류가 있는지 확인할 수 있습니다. – jdl

+0

Aaahh ... 좋습니다. Test.log는 내가 로그인하지 않았으므로 테스트에 실패했다는 것을 보여줍니다. 인증 된 사용자 만 영역을 만들 수 있도록 설정했습니다. 모두 의미가 있습니다. 내가 받아 들일 수 있도록 대답을해야합니다! 감사 –

답변

2

위의 요청에 따라 로그에 파고 할 때 찾을 수있을 것이라고 기대했던 것과 일치하면 테스트에서 충족되지 않는 권한이 있습니다.

1

@request 및 @response도 유용한 객체입니다 (예 : 테스트 내부에 puts @response). 어떤 인증을 사용하고 있는지 알 수는 없지만 authenticated_test_helper 또는 /lib 또는 /test 인증 젬을 RAILS_ROOT/lib으로 확인하십시오. 로그인을 수행하는 방법을 찾을 수 있습니다.

관련 문제