2016-11-19 14 views
0

私はRails 5 API、Punditを使用しています。私はこの特定のケースをテストしようとしています。あなたがリソースの所有者でない場合、そのユーザーの情報を表示できないはずです。Rails Punditミニテストassert_response Pundit :: NotAuthorizedError

私はいくつかのユーザーフィクスチャサンプルデータを得ました。サラとジムは2つです。

私はここに、このテストケースを得た:

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を除いて、渡された他のすべてのもの:

​​

は私が正しくassert_raise例外を書いていますか?なぜ私のテストは合格しないのですか?エラーが発生すると、テストの次の行がもう実行されないようです。それはこのようなものだから:(

がより検索した後、結局のところ

答えて

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には、エラーの種類を取り、誤りを主張するコードのブロックがraiになります〜のためにsed。言い換えれば

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

私の他の検索は通常、RSpecのテストの構文をアップになります。私のようなMini Testを使用している将来のRails開発者のために、この回答をここに残す:D

関連する問題