vjik/codeception-db-populator
Composer 安装命令:
composer require vjik/codeception-db-populator
包简介
Database populator for Codeception DB module
README 文档
README
Database Populator for Codeception DB Module
Codeception DB module addon that helps you to tune database populations. So for a test you could load only needed tables or rows. As a result it dramatically reduces the total execution time.
Requirements
- PHP 8.0 or higher.
- Codeception 5.0 or higher.
- Codeception Module DB 3.0 or higher.
Installation
The package could be installed with composer:
composer require vjik/codeception-db-populator --dev
General usage
Enable module Db and DatabasePopulator addon in the suite:
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'
Create SQL dumps that contains a record of the table structure and/or the data for use in tests.
Put dumps into path, specified in options (for example, tests/_data/dumps).
Create row sets for populate database tables. Row sets is PHP file that return array in format table => rows.
For example:
<?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', ], ], ];
You can get structure, similar to this:
tests/
_data/
dumps/
user-management.sql
blog.sql
catalog.sql
rows/
users.php
authors.php
blog-categories.php
posts-with-categories.php
Load dumps and row sets in your tests:
final class BlogTest extends Unit { public function testCreatePost(): void { $this->tester->loadDump('blog'); $this->tester->loadRows('authors'); ... } }
Actions
loadDump()
Load the specified dump(s) to database. Before loading the dump, the database is cleaned.
$I->loadDump('blog'); // load one dump $I->loadDump('blog', 'catalog'); // load several dumps
loadRows()
Load the specified row set(s) to database.
$I->loadRows('posts'); // load one set $I->loadRows('users', 'comments'); // load several sets
Configuration
dumpsPath(required) — relative path to directory with dumps (for example,tests/_dump).rowsPath(required) — relative path to directory with row sets (for example,tests/_rows).preloadDump— dump(s) for preload before run suite.preloadRows— row set(s) for preload before run suite.
Testing
Unit and integration testing
The package is tested with Codeception. For tests need MySQL database with configuration:
- host:
127.0.0.1 - name:
db_test - user:
root - password:
root
To run tests:
./vendor/bin/codecept run
Static analysis
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
License
The Database Populator for Codeception DB Module is free software. It is released under the terms of the BSD License. Please see LICENSE for more information.
统计信息
- 总下载量: 387
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 22
- 点击次数: 0
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: BSD-3-Clause
- 更新时间: 2021-09-18
