РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1230 of 1392 menu

Метод assertDatabaseMissing

Метод assertDatabaseMissing используется в тестах Laravel для проверки того, что в таблице базы данных отсутствуют записи, соответствующие указанным условиям. Первым параметром передаётся имя таблицы, вторым - массив данных для поиска, третьим (необязательным) - соединение с базой данных. Метод проверяет, что в таблице нет ни одной записи, удовлетворяющей всем переданным критериям.

Синтаксис

<?php $this->assertDatabaseMissing($table, $data, $connection); ?>

Пример

Давайте проверим, что после удаления пользователя его запись отсутствует в таблице:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_user_is_deleted() { $user = User::create([ 'name' => 'John Doe', 'email' => 'john@example.com', 'password' => bcrypt('password') ]); $user->delete(); $this->assertDatabaseMissing('users', [ 'email' => 'john@example.com' ]); } } ?>

Пример

Давайте проверим, что после обновления записи старые данные отсутствуют в базе:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Post; class PostTest extends TestCase { public function test_post_updated_successfully() { $post = Post::create([ 'title' => 'Old Title', 'content' => 'Old content text', 'is_published' => false ]); $post->update([ 'title' => 'New Title', 'content' => 'New content text', 'is_published' => true ]); $this->assertDatabaseMissing('posts', [ 'title' => 'Old Title', 'content' => 'Old content text' ]); $this->assertDatabaseHas('posts', [ 'title' => 'New Title' ]); } } ?>

Пример

Давайте проверим, что при неудачной валидации данные не сохраняются в базу:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Article; class ArticleControllerTest extends TestCase { public function test_article_not_created_with_invalid_data() { $response = $this->postJson('/api/articles', [ 'title' => '', 'content' => 'Some content' ]); $response->assertStatus(422); $this->assertDatabaseMissing('articles', [ 'content' => 'Some content' ]); } } ?>

Пример

Давайте проверим, что после массового удаления все указанные записи отсутствуют:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_multiple_users_deleted() { User::factory()->count(3)->create([ 'status' => 'inactive' ]); User::where('status', 'inactive')->delete(); $this->assertDatabaseMissing('users', [ 'status' => 'inactive' ]); } } ?>

Смотрите также

  • метод assertDatabaseHas,
    который проверяет наличие записей в таблице
  • метод assertDatabaseCount,
    который проверяет количество записей в таблице
  • метод assertModelMissing,
    который проверяет отсутствие модели в базе
  • метод assertSoftDeleted,
    который проверяет, что модель помечена как мягко удалённая
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить