Метод assertSessionMissing
Метод assertSessionMissing применяется к объекту ответа
в тестах Laravel и проверяет, что переданное значение
отсутствует в сессии. Первым параметром передаётся ключ,
по которому проверяется отсутствие данных. Метод возвращает
тот же объект ответа для цепочки вызовов.
Синтаксис
<?php
$this->get($url)->assertSessionMissing($key);
?>
Пример
Давайте проверим, что после успешного выполнения запроса
в сессии отсутствует ключ 'error':
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\User;
class UserControllerTest extends TestCase
{
public function test_user_profile_has_no_error()
{
$user = User::factory()->create();
$res = $this->actingAs($user)
->get('/profile')
->assertSessionMissing('error');
$this->assertTrue($res->isOk());
}
}
?>
Пример
Давайте проверим, что после отправки формы с корректными данными в сессии отсутствуют ошибки валидации:
<?php
namespace Tests\Feature;
use Tests\TestCase;
class PostControllerTest extends TestCase
{
public function test_valid_post_has_no_errors()
{
$data = [
'title' => 'Test Article',
'content' => 'This is test content'
];
$res = $this->post('/posts', $data)
->assertSessionMissing('errors');
$this->assertTrue($res->isRedirect());
}
}
?>
Пример
Давайте проверим, что после удаления элемента из корзины
в сессии отсутствует ключ 'cart':
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Product;
class CartControllerTest extends TestCase
{
public function test_cart_is_empty_after_clear()
{
$product = Product::factory()->create();
$this->post('/cart/add', ['product_id' => $product->id]);
$this->post('/cart/clear')
->assertSessionMissing('cart');
}
}
?>
Смотрите также
-
метод
assertSessionHas,
который проверяет наличие данных в сессии -
метод
assertSessionHasErrors,
который проверяет наличие ошибок в сессии -
метод
withSession,
который устанавливает данные сессии для теста -
метод
assertStatus,
который проверяет HTTP-статус ответа