2017-01-26 13 views
0

Laravelでルートをテストすると、返された応答とセッションの両方に対してアサートできないようです。これには何らかの理由がありますか、代わりにテストを2つに分割する必要がありますか?ここでセッションと応答に対するLaravelテストアサーション

は簡略化され、私のテストです:

$response = $this->call('POST', route('some-route'), $data); 

これは渡し:

$this->assertResponseStatus(302); 

をこれが通過しない:

$this 
    ->assertResponseStatus(302) 
    ->assertSessionHasErrors([ 
     'application_status' => 'Application status has changed. Action not applied.' 
    ]); 

をテストはそれができるというエラーをスローしますヌルに対して断言する私はラウンドのテストの順番を移動してもそのように主張する前に、変数に応答して、セッションを割り当てる試みた

$response = $this->call('POST', route('admin.application.action.store'), $data); 
$sessionErrors = session()->get('errors'); 

$this 
    ->assertEquals(302, $response->status()) 
    ->assertTrue($sessionErrors->has('application_status')); 

しかし、まだ同じ問題を取得します。 Error: Call to a member function assertTrue() on null

アドバイスをいただければ幸いです。ありがとう!

答えて

1

アサーションは流体インターフェイスを実装していません。 2つの連続したステートメントとして実行:

$this->assertResponseStatus(302); 
$this->assertSessionHasErrors([ 
    'application_status' => 'Application status has changed. Action not applied.' 
]); 
+0

ありがとうございます!その1つのハハで非常に長い時間を過ごした。テストが終了しました。 – haakym

関連する問題