sl0wlydeadly / pimcore-codeception-config-files
Pimcore 测试环境配置文件
1.1.1
2024-03-14 18:54 UTC
Requires (Dev)
- codeception/codeception: ^4.1.12
- codeception/module-symfony: ^1.6.0
- doctrine/dbal: ^2.12
- phpunit/phpunit: >=9.3
- pimcore/pimcore: >= 5.4
- symfony/dependency-injection: ^5.3.3
- symfony/event-dispatcher: ^5.4.0
- symfony/filesystem: ^5.2.0
- symfony/finder: ^5.2.0
- symfony/http-kernel: ^5.3
README
Pimcore 测试环境配置文件
安装
运行以下命令
composer require sl0wlydeadly/pimcore-codeception-config-files
数据库配置
- 以root身份登录您的MariaDB客户端
mysql -u [root username] -p[root password]
- 为测试创建一个不同的数据库,例如pimcore_test
CREATE DATABASE pimcore_test;
- 给pimcore用户分配该数据库的权限
GRANT ALL PRIVILEGES ON pimcore_test.* TO 'pimcore'@'%';
在Pimcore项目中设置测试配置
- [示例] 我们有一个名为db、端口为3306的Docker数据库容器,以及一个名为pimcore_test的测试数据库,那么在 config/packages/test/config.yaml 下的doctrine dbal配置部分应该如下所示
doctrine:
dbal:
connections:
default:
host: db
port: '3306'
dbname: pimcore_test
user: pimcore
password: pimcore
根据Pimcore文档设置bootstrap.php以用于codeception测试
- 我的设置如下
<?php
// tests/_bootstrap.php
use App\Kernel;
use Pimcore\Bootstrap;
// define project root which will be used throughout the bootstrapping process
define('PIMCORE_PROJECT_ROOT', realpath(__DIR__ . '/..'));
const PROJECT_ROOT = PIMCORE_PROJECT_ROOT;
$kernel = Kernel::class;
// set the used pimcore/symfony environment
foreach (['APP_ENV' => 'test', 'PIMCORE_SKIP_DOTENV_FILE' => true] as $name => $value) {
putenv("{$name}={$value}");
$_ENV[$name] = $_SERVER[$name] = $value;
}
putenv("KERNEL_CLASS={$kernel}");
$_ENV["KERNEL_CLASS"] = $kernel;
require_once PIMCORE_PROJECT_ROOT . '/vendor/autoload.php';
Bootstrap::setProjectRoot();
Bootstrap::bootstrap();
Bootstrap::kernel();
设置您的codeception配置
- 在Pimcore项目的根目录下,您应该有一个 tests 目录。
- 在 tests 目录中,确保您有一个 codeception.dist.yml 配置文件。您可能需要修改和调整内容以满足您的喜好,但默认情况下,它应该如下所示
# tests/codeception.dist.yml
namespace: Tests
support_namespace: Support
actor_suffix: Tester
paths:
tests: .
output: ./_output
data: ./Support/Data
support: ./Support
envs: ./_envs
settings:
bootstrap: _bootstrap.php
colors: true
params:
- env
extensions:
enabled:
- Codeception\Extension\RunFailed
- 设置您的测试套件配置以使用包数据在测试运行后重新创建测试数据库。以下示例用于单元测试套件配置 Unit.suite.yml 应该如下所示
suite_namespace: \App\Tests\Unit
actor: UnitTester
modules:
enabled:
- Asserts
- \Sl0wlydeadly\PimcoreCodeceptionConfigFiles\Support\Helper\Pimcore:
# CAUTION: the following config means the test runner
# will drop and re-create the Pimcore DB and purge var/classes
# use only in a test setup (e.g. during CI)!
connect_db: true
initialize_db: true
purge_class_directory: false
# If true, it will create database structures for all definitions
setup_objects: false
有关更多信息,请参阅Pimcore官方文档中的Codeception测试部分
构建您的codeception配置
运行以下命令
php vendor/bin/codecept build
使用test作为环境运行配置好的测试套件的测试
php vendor/bin/codecept run -c . Unit --env=test