vjik/codeception-db-populator

Codeception DB模块的数据填充器

1.1.1 2024-07-18 10:50 UTC

This package is auto-updated.

Last update: 2024-09-18 11:08:52 UTC


README

Codeception DB模块数据填充器


Latest Stable Version Total Downloads MySQL build PgSQL build static analysis License

Codeception DB模块插件,帮助您调整数据库填充。因此,对于测试,您只能加载所需的表或行。结果它大大减少了总执行时间。

要求

  • PHP 8.0或更高版本。
  • Codeception 5.0或更高版本。
  • Codeception Module DB 3.0或更高版本。

安装

可以使用composer安装此包

composer require vjik/codeception-db-populator --dev

通用用法

在套件中启用模块DbDatabasePopulator插件

modules:
  enabled:
    - Db:
        dsn: 'mysql:host=%DB_HOST%;dbname=%DB_NAME%'
        user: '%DB_USERNAME%'
        password: '%DB_PASSWORD%'
    - Vjik\Codeception\DatabasePopulator\Module:
        dumpsPath: 'tests/_data/dumps'
        rowsPath: 'tests/_data/rows'

创建包含表结构记录和/或测试中使用的数据的SQL备份。将备份放入选项中指定的路径(例如,tests/_data/dumps)。

创建用于填充数据库表的行集。行集是PHP文件,返回格式为table => rows的数组。例如

<?php
return [
    'author' => [
        [
            'id' => 1,
            'name' => 'Ivan',
        ],
        [
            'id' => 2,
            'name' => 'Petr',
        ],
    ],
    'post' => [
        [
            'id' => 1,
            'author_id' => 2,
            'name' => 'First post',
        ],
        [
            'id' => 2,
            'author_id' => 2,
            'name' => 'My history',
        ],
    ],
];

您可以获得类似以下的结构

tests/
  _data/
    dumps/
      user-management.sql
      blog.sql
      catalog.sql
    rows/
      users.php
      authors.php
      blog-categories.php
      posts-with-categories.php

在测试中加载备份和行集

final class BlogTest extends Unit
{
    public function testCreatePost(): void
    {
        $this->tester->loadDump('blog');
        $this->tester->loadRows('authors');
        ...
    }
}

操作

loadDump()

将指定的备份加载到数据库中。在加载备份之前,将清理数据库。

$I->loadDump('blog'); // load one dump
$I->loadDump('blog', 'catalog'); // load several dumps

loadRows()

将指定的行集加载到数据库中。

$I->loadRows('posts'); // load one set
$I->loadRows('users', 'comments'); // load several sets

配置

  • dumpsPath(必需)- 存储备份的目录的相对路径(例如,tests/_dump)。
  • rowsPath(必需)- 存储行集的目录的相对路径(例如,tests/_rows)。
  • preloadDump - 在运行套件之前预加载的备份。
  • preloadRows - 在运行套件之前预加载的行集。

测试

单元和集成测试

该包与Codeception进行了测试。对于测试需要配置MySQL数据库

  • 主机: 127.0.0.1
  • 名称: db_test
  • 用户: root
  • 密码: root

要运行测试

./vendor/bin/codecept run

静态分析

代码使用Psalm进行了静态分析。要运行静态分析

./vendor/bin/psalm

许可证

Database Populator for Codeception DB Module是免费软件。它根据BSD许可证条款发布。有关更多信息,请参阅LICENSE