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

Метод assertDatabaseHas

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

Синтаксис

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

Пример

Давайте проверим, что в таблице 'users' существует пользователь с email равным 'user@example.com':

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class UserTest extends TestCase { public function test_user_exists() { $user = User::factory()->create([ 'email' => 'user@example.com', ]); $this->assertDatabaseHas('users', [ 'email' => 'user@example.com', ]); } } ?>

Результат выполнения кода:

"Test passed: record exists in database"

Пример

Давайте проверим, что в таблице 'posts' существует запись с 'title' равным 'My First Post' и 'status' равным 'published':

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Post; class PostTest extends TestCase { public function test_post_with_multiple_conditions_exists() { $post = Post::factory()->create([ 'title' => 'My First Post', 'status' => 'published', ]); $this->assertDatabaseHas('posts', [ 'title' => 'My First Post', 'status' => 'published', ]); } } ?>

Результат выполнения кода:

"Test passed: record with multiple conditions exists"

Пример

Давайте используем assertDatabaseHas после выполнения HTTP-запроса для проверки создания записи:

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\User; class PostControllerTest extends TestCase { public function test_post_can_be_created() { $user = User::factory()->create(); $response = $this->actingAs($user) ->post('/posts', [ 'title' => 'New Post', 'content' => 'Post content', ]); $response->assertStatus(201); $this->assertDatabaseHas('posts', [ 'title' => 'New Post', 'content' => 'Post content', 'user_id' => $user->id, ]); } } ?>

Результат выполнения кода:

"Test passed: post created and exists in database"

Пример

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

<?php namespace Tests\Feature; use Tests\TestCase; use App\Models\Order; class OrderTest extends TestCase { public function test_order_with_specific_total_exists() { $order = Order::factory()->create([ 'total' => 1500, 'status' => 'completed', ]); $this->assertDatabaseHas('orders', [ 'total' => 1500, 'status' => 'completed', ]); } } ?>

Результат выполнения кода:

"Test passed: order with specific total exists"

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

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