2016-06-17 13 views
1

私の機能テストでは、Codeceptionを使用してUnauthorizedExceptionを傍受しようとしています。まあ、実際には、私の機能テストは、授業で引き起こされたLaravelテストです。だから、私は2つの方法を試みた:Laravel 5/Codeceptionで未承認の例外がキャッチされていません

/** @test 
* 
* @expectedException UnauthorizedException 
*/ 
public function test_exception() 
{ 

    $this->visit("/associations/1/edit") 

} 

それとも私のコントローラで

/** @test 
* 
*/ 
public function test_exception() 
{ 
    \PHPUnit_Framework_TestCase::setExpectedException(UnauthorizedException::class); 
    $this->visit("/associations/1/edit") 

} 

を、私はテストにそれをトロウ:どちらの場合も

throw new UnauthorizedException(); 

、それだけで言う:

Failed asserting that exception of type "UnauthorizedException" is thrown. 

すべては問題なく表示されますが、どんなアイデアなの????

EDIT:コントローラ

public function edit($id) 
{ 

    $association = Association::findOrFail($id); 
    $federation = $association->federation; 

    if (Auth::user()->cannot('edit', $association)) { // I have checked with dd() my test goes here. 
     throw new UnauthorizedException(); 
    } 

    $users = User::all(); 
    $federations = Federation::all(); 

    return view('associations.form', compact('association', 'users', 'federations', 'federation')); 
} 
+0

名前空間を試しましたか? '\ Illuminate \ Contracts \ Validation \ UnauthorizedException' –

+0

私は以下を使用します:Illuminate \ Contracts \ Validation \ UnauthorizedExceptionを使用します。それは同じことではありませんか? –

+0

はい、そうです。完全なコントローラメソッド –

答えて

0

で私の編集方法は、私は最終的にhereから解決策を得た:

基本的な考え方、私は推測する、catchedとビューが返されるハンドラに送信される例外です。

public function render($request, Exception $e) 
{ 
    if (App::environment() == 'testing') { 
     throw $e; 
    } 
    // Your exception management... 

となりまし例外がスローされます。

ので、テストのために、あなたはHandler.phpに条件を含める必要があります!

関連する問題