2016-11-19 4 views
0

레일즈 5 API를 사용하고 있으며 잘 진행되고 있습니다. 리소스 소유자가 아닌 경우 해당 사용자의 정보를 볼 수 없어야하는 특정 사례를 테스트하려고합니다.레일즈 Pundit 미니 테스트 assert_response Pundit :: NotAuthorizedError

그래서 몇 가지 사용자 고정물 샘플 데이터가 있습니다. Sarah와 Jim은 그 중 두 가지입니다.

내가 여기에이 테스트 케이스를 가지고 :

Error: 
UsersControllerTest#test_user_show_-_cannot_show_other_user's_info: 
Pundit::NotAuthorizedError: not allowed to show? 

내가 제대로 assert_raise 예외를 쓰고 있어요 :

test "user show - cannot show other user's info" do 
    get user_path(@sarah), headers: user_authenticated_header(@jim) 
    assert_raises(Pundit::NotAuthorizedError) 
end 

내가 내 테스트를 실행, 다른 모든 사람들은 말합니다이 하나를 제외하고, 통과? 내 검사가 왜 통과하지 않습니까? 오류가 제기되면 내 테스트의 다음 줄이 더 이상 실행되지 않는 것 같습니다. 그것은이처럼 밖으로 :(

더 검색 후에는 밝혀

답변

1

난 내 자신의 질문에 대답 지킬 때 나는 그것을 싫어 ... 지금까지 :

test "user show - cannot show other user's info" do 
    assert_raises(Pundit::NotAuthorizedError) { 
    get user_path(@sarah), headers: user_authenticated_header(@jim) 
    } 
end 

나는이를 발견 한 후 답을 발견 :

http://apidock.com/ruby/Test/Unit/Assertions/assert_raise

assert_raises는 라이 될 오류를 주장하는 내 경우 Pundit::NotAuthorizedError 및 코드 블록에서 오류 유형 소요 에 대한 sed.

에서 다른 단어 :

assert_raises(ExceptionType) { 
    // my code to execute that will cause the error to happen 
} 

내 다른 검색은 일반적으로 RSpec에 테스트 구문을집니다. 미래의 Rails 개발자들이 나 같은 Mini Test를 사용하여이 대답을 남겼습니다 : D