Метод assertCookie
Метод assertCookie применяется к объекту ответа в тестах Laravel и проверяет, что в ответе присутствует cookie с заданными параметрами. Первым параметром передаётся имя cookie, вторым - ожидаемое значение. Метод также принимает дополнительные параметры для проверки других атрибутов cookie, таких как путь, домен, время истечения и флаги безопасности.
Синтаксис
<?php
$response->assertCookie($name, $value = null, $path = null, $domain = null, $secure = null, $httpOnly = null, $expires = null);
?>
Пример
Проверим, что при успешном входе пользователя устанавливается cookie с именем 'auth_token' и определённым значением:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
class AuthTest extends TestCase
{
public function test_login_sets_auth_cookie()
{
$user = User::create([
'name' => 'Test User',
'email' => 'user@example.com',
'password' => Hash::make('password123')
]);
$response = $this->post('/login', [
'email' => 'user@example.com',
'password' => 'password123'
]);
$response->assertCookie('auth_token');
}
}
?>
Результат выполнения кода при успешном тесте:
"Test passed"
Пример
Проверим конкретное значение cookie и дополнительные параметры:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class CookieTest extends TestCase
{
public function test_cookie_has_correct_attributes()
{
$response = $this->get('/set-cookie');
$response->assertCookie(
'user_preference',
'dark_mode',
'/', // path
null, // domain
true, // secure
true, // httpOnly
null // expires
);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Используем метод для проверки отсутствия cookie в ответе с помощью дополнительного метода assertCookieMissing:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class AuthTest extends TestCase
{
public function test_logout_removes_auth_cookie()
{
$response = $this->post('/logout');
$response->assertCookieMissing('auth_token');
}
}
?>
Результат выполнения кода:
"Test passed"
Смотрите также
-
метод
assertHeader,
который проверяет наличие заголовка в ответе -
метод
assertStatus,
который проверяет HTTP-статус ответа -
метод
assertRedirect,
который проверяет редирект в ответе -
метод
assertSessionHas,
который проверяет наличие данных в сессии