kalio / ezloremipsumbundle
Kaliop eZ-Lorem-Ipsum Bundle
Requires
- php: >=5.6
- fakerphp/faker: ^1.9.1
- kaliop/ezmigrationbundle: ^5.1.1 || ^6.0
- symfony/expression-language: *
- tecnickcom/tcpdf: *
Requires (Dev)
- phpunit/phpunit: ^5.0 || ^8.5.14
- roave/security-advisories: dev-disablechecks as dev-master
README
一个针对 eZPublish5 / eZPlatform 的包,用于大量生成示例/测试内容。
工作原理,30 行 yaml 代码
-
type: loop
repeat: 5
steps:
-
type: content
mode: create
content_type: folder
parent_location: 2
attributes:
name: "Folder [loop:iteration] - [faker:sentence(3)]"
references:
-
attribute: location_id
identifier: parent_folder_loc
overwrite: true
-
type: loop
repeat: 3
steps:
-
type: content
mode: create
content_type: folder
parent_location: reference:parent_folder_loc
attributes:
name: "Folder [faker:unixTime]"
如上所述,这段代码将创建总共 20 个 '文件夹' 类型的内容,嵌套在 2 个级别中,每个顶级文件夹有 3 个子文件夹。顶级文件夹的名称包含 3 个随机的拉丁单词。
要求
- eZPublish 2014.11 或更高版本或 eZPlatform
- eZMigrationBundle 5.1.1 或更高版本
- Faker,最初来自 FZaninotto
- TCPDF 来自 tecnick.com
(所有这些都可以通过 composer 自动处理)
安装
-
通过 composer 获取包
composer require kaliop/ezloremipsumbundle
-
在 Kernel 的
registerBundles()
方法中激活它public function registerBundles() { ... new \Kaliop\eZLoremIpsumBundle\EzLoremIpsumBundle()
使用方法
此包所做的所有事情就是为 Kaliop 迁移包提供一个名为 faker
的新引用解析器。
这意味着为了创建大量内容,您只需要设置并运行一个 '迁移'。迁移在以下地址有详细文档:https://github.com/kaliop-uk/ezmigrationbundle/ 和 https://github.com/kaliop-uk/ezmigrationbundle/tree/master/Resources/doc/DSL
'faker' 引用解析器旨在生成随机数据。它旨在支持 Faker 库的所有功能。以下是一些可以生成的数据类型:
- 短语
- 段落
- 名字
- 地址
- 电话号码
- 日期和时间
- 电子邮件
- 域名
- 数字
- 图像和文件
支持的完整数据列表在 https://fakerphp.github.io/ 上有文档。
支持的语法更详细的描述在 DSL 语言描述 中。
更多使用示例可以在 用于运行 CI 测试的迁移 中找到。
注意 当使用 image
提供程序时,存在已知问题,无法从远程服务下载图像文件。建议使用 picture
提供程序。
运行测试
此包使用 PHPUnit 运行功能测试。
在运行的 eZPublish / eZPlatform 安装上运行测试
要运行测试
export KERNEL_DIR=app (or 'ezpublish' for ezpublish 5.4/cp setups)
export SYMFONY_ENV=behat (or whatever your environment is)
bin/phpunit --stderr -c vendor/kaliop/ezworkflowenginebundle/phpunit.xml.dist
注意 测试不会模拟与数据库的交互,但会在其中创建/修改/删除许多类型的数据。因此,运行测试可能会导致留下陈旧/损坏的数据。建议使用专门的 eZPublish 安装或至少专门的数据库来运行测试套件。
为包设置专用测试环境
运行组件测试的一个更安全的选择是设置一个专用环境,类似于在GitHub Actions上运行测试套件时所使用的环境。优势很多:一方面,你可以从任何版本的eZPublish开始;另一方面,你将更有信心,任何你添加或修改的测试都将通过GitHub。缺点是,你需要Docker和Docker-compose,并且你将使用的环境将非常不同于标准的eZPublish设置!此外,构建这个环境需要相当多的磁盘空间和时间。
设置专用测试环境并在其中运行测试的步骤
git clone --depth 1 https://github.com/tanoconsulting/euts.git teststack
# if you have a github auth token, it is a good idea to copy it now to teststack/docker/data/.composer/auth.json
# this config sets up a test environment with eZPlatform 2.5 running on php 7.4 / debian bullseye
export TESTSTACK_CONFIG_FILE=Tests/environment/.euts.2.5.env
./teststack/teststack build
./teststack/teststack runtests
./teststack/teststack.sh stop
你还可以单独运行一个测试用例
./teststack/teststack runtests ./Tests/phpunit/01_CommandsTest.php
注意:第一次运行时这会花费一些时间,但后续运行会更快。注意:请确保有足够的磁盘空间。
如果你想手动运行命令,例如symfony控制台
./teststack/teststack console cache:clear
或者轻松地进入数据库shell提示符
./teststack/teststack dbconsole
或者命令行shell提示符,指向运行测试的Docker容器
./teststack/teststack shell
在Docker容器中运行的测试使用的是文件Tests/environment/.euts.2.5.env
中指定的debian/php/eZPlatform内核版本,这是由环境变量TESTSTACK_CONFIG_FILE
指定的。如果没有设置该环境变量的值,则会查找名为.euts.env
的文件。如果不存在此类文件,则会使用一些默认值,你可以查看./teststack/README.md中的文档以了解它们是什么。如果你想针对eZ/php/debian的不同版本进行测试,请自由
- 创建
.euts.env
文件,如果不存在的话 - 向其中添加任何需要的变量(请参考文件
teststack/.euts.env.example
作为指导) - 重新构建测试堆栈
- 以通常的方式运行测试
你甚至可以通过使用不同的env文件,并行保持多个测试堆栈可用
- 创建一个文件
.euts.env.local
并向其中添加任何需要的环境变量,以一个独特的COMPOSE_PROJECT_NAME
开始 - 通过
./teststack/teststack -e .euts.env.local build
构建新的测试堆栈 - 通过
./teststack/teststack -e .euts.env.local runtests
运行测试
感谢
非常感谢Crevillo对查看AliceBundle的建议,以及感谢FZaninotto完成了大量工作