Код состояния ответа [200] не является кодом состояния перенаправления. Не удалось утверждать, что ложь является истиной
Это мой код модульного тестирования laravel для входа в систему
public function testClientSucceslogin()
{
$user = factory(User::class)->create([
'password' => 'secret',
'status' => User::STATUS_ACTIVE,
'type' => User::TYPE_CLIENT
]);
$clientProfile = ClientProfile::where('client_id', $user->client_id)->first();
$client_alias = Client::where('id', $user->client_id)->first();
$this->get(route('login', [$user->email, $user->password]))
->assertStatus(200)
->assertRedirect('dashboard', [$client_alias->alias, $clientProfile->id])
->assertTrue(true);
}
и я получил эту ошибку
Response status code [200] is not a redirect status code. Failed asserting that false is true.
и я изменил код состояния на 302, но я получил эту ошибку
enter code heExpected status code 302 but received 200.
Не удалось утверждать, что ложь - это правда.
Как я могу решить эту проблему?
1 ответ
assertRedirect()
сначала проверяет ваш код состояния. Если вы не следуете rfc , вы можете просто проверить,Location
заголовок присутствует в ответе.
В 5.8+ вы можете сделать это черезassertLocation()
:
$this->get(route('login', [$user->email, $user->password]))
->assertStatus(200)
->assertLocation('your-location')
->assertTrue(true);
В 5.4 вы использовалиPHPUnit::assertEquals()
$response = $this->get(route('login', [$user->email, $user->password]));
$response->assertStatus(200)
->assertTrue(true);
PHPUnit::assertEquals(app('url')->to($uri), $response->headers->get('Location'));