assertDatabaseCount
Метод assertDatabaseCount предназначен для проверки количества записей
в указанной таблице базы данных в тестах Laravel. Этот метод позволяет
утверждать, что таблица содержит ожидаемое количество строк.
Первым параметром передаётся имя таблицы, вторым - ожидаемое количество
записей. Третьим необязательным параметром можно передать имя соединения
с базой данных.
Синтаксис
<?php
$this->assertDatabaseCount($table, $expectedCount, $connection);
?>
Пример
Давайте проверим, что в таблице 'users' содержится ровно 5 записей:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Models\User;
class UserTest extends TestCase
{
public function test_users_table_has_five_records()
{
User::factory()->count(5)->create();
$this->assertDatabaseCount('users', 5);
}
}
?>
Результат выполнения кода:
"Test passed: users table has 5 records"
Пример
Давайте проверим количество записей в таблице 'posts'
после создания определённого количества постов:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Post;
class PostTest extends TestCase
{
public function test_ten_posts_created()
{
Post::factory()->count(10)->create();
$this->assertDatabaseCount('posts', 10);
}
}
?>
Результат выполнения кода:
"Test passed: posts table has 10 records"
Пример
Давайте проверим количество записей в таблице 'articles'
после выполнения операции удаления:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Article;
class ArticleTest extends TestCase
{
public function test_articles_deleted_should_leave_five()
{
Article::factory()->count(10)->create();
Article::where('id', '>', 5)->delete();
$this->assertDatabaseCount('articles', 5);
}
}
?>
Результат выполнения кода:
"Test passed: articles table has 5 records after deletion"
Пример
Давайте проверим, что таблица 'categories' пуста
после удаления всех записей:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use App\Models\Category;
class CategoryTest extends TestCase
{
public function test_categories_table_is_empty()
{
Category::factory()->count(3)->create();
Category::truncate();
$this->assertDatabaseCount('categories', 0);
}
}
?>
Результат выполнения кода:
"Test passed: categories table is empty"
Пример
Давайте проверим количество записей с использованием определённого соединения с базой данных:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use App\Models\User;
class DatabaseTest extends TestCase
{
public function test_secondary_database_users_count()
{
$this->assertDatabaseCount('users', 3, 'secondary');
}
}
?>
Результат выполнения кода:
"Test passed: secondary database users table has 3 records"
Смотрите также
-
метод
assertDatabaseHas,
который проверяет существование записи в таблице -
метод
assertDatabaseMissing,
который проверяет отсутствие записи в таблице -
метод
assertSoftDeleted,
который проверяет мягкое удаление записи -
класс
TestCase,
который является базовым классом для всех тестов