zenstruck / foundry
一个用于创建具有表达力、自动完成、按需开发/测试固定数据的模型工厂库,适用于Symfony和Doctrine。
Requires
- php: >=8.1
- doctrine/persistence: ^2.0|^3.0
- fakerphp/faker: ^1.23
- symfony/deprecation-contracts: ^2.2|^3.0
- symfony/framework-bundle: ^6.4|^7.0
- symfony/property-access: ^6.4|^7.0
- symfony/var-exporter: ^6.4.9|~7.0.9|^7.1.2
- zenstruck/assert: ^1.4
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- dama/doctrine-test-bundle: ^7.0|^8.0
- doctrine/collections: ^1.7|^2.0
- doctrine/common: ^3.2
- doctrine/doctrine-bundle: ^2.10
- doctrine/doctrine-migrations-bundle: ^2.2|^3.0
- doctrine/mongodb-odm-bundle: ^4.6|^5.0
- doctrine/orm: ^2.16|^3.0
- phpunit/phpunit: ^9.5.0 || ^10.0 || ^11.0
- symfony/console: ^6.4|^7.0
- symfony/dotenv: ^6.4|^7.0
- symfony/maker-bundle: ^1.55
- symfony/phpunit-bridge: ^6.4|^7.0
- symfony/translation-contracts: ^3.4
- symfony/var-dumper: ^6.4|^7.0
- symfony/yaml: ^6.4|^7.0
- 2.x-dev
- v2.0.9
- v2.0.8
- v2.0.7
- v2.0.6
- v2.0.5
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- 1.x-dev
- v1.38.3
- v1.38.2
- v1.38.1
- v1.38.0
- v1.37.0
- v1.36.1
- v1.36.0
- v1.35.0
- v1.34.1
- v1.34.0
- v1.33.0
- v1.32.0
- v1.31.0
- v1.30.3
- v1.30.2
- v1.30.1
- v1.30.0
- v1.29.0
- v1.28.0
- v1.27.0
- v1.26.0
- v1.25.0
- v1.24.1
- v1.24.0
- 1.23.x-dev
- v1.23.0
- v1.22.1
- v1.22.0
- v1.21.1
- v1.21.0
- v1.20.0
- v1.19.0
- v1.18.2
- v1.18.1
- v1.18.0
- v1.17.0
- v1.16.0
- v1.15.0
- v1.14.1
- v1.14.0
- v1.13.4
- v1.13.3
- v1.13.2
- v1.13.1
- v1.13.0
- v1.12.0
- v1.11.1
- v1.11.0
- v1.10.0
- v1.9.1
- v1.9.0
- v1.8.0
- v1.7.1
- v1.7.0
- v1.6.0
- v1.5.0
- v1.4.0
- v1.3.0
- v1.2.1
- v1.2.0
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.0
This package is auto-updated.
Last update: 2024-09-05 06:05:23 UTC
README
Foundry通过一个具有表达力、自动完成、按需固定数据的系统,让创建固定数据变得有趣,该系统与Symfony和Doctrine一起使用。
$post = PostFactory::new() // Create the factory for Post objects ->published() // Make the post in a "published" state ->create([ // create & persist the Post object 'slug' => 'post-a' // This Post object only requires the slug field - all other fields are random data ]) ;
这些工厂可以在DoctrineFixturesBundle内部使用来加载固定数据,或者在您的测试中,它具有更多功能。
Foundry支持doctrine/orm
(与doctrine/doctrine-bundle一起使用),doctrine/mongodb-odm
(与doctrine/mongodb-odm-bundle一起使用),或者这两者的组合。
想观看有关它的屏幕录像 🎥 吗?请查看https://symfonycasts.com/foundry
如何贡献
运行测试套件
这个库的测试套件需要一个或多个数据库,然后它包含一个docker compose配置。
注意
需要在本地上安装Docker和PHP(带有mysql
、pgsql
和mongodb
扩展)。
您可以使用以下命令启动容器并运行测试套件
# start the container $ docker compose up --detach # install dependencies $ composer update # run test suite with all available permutations $ composer test # run only one permutation $ ./phpunit # run test suite with dama/doctrine-test-bundle $ USE_DAMA_DOCTRINE_TEST_BUNDLE=1 vendor/bin/phpunit # run test suite with postgreSQL instead of MySQL $ DATABASE_URL="postgresql://zenstruck:[email protected]:5433/zenstruck_foundry?serverVersion=15" vendor/bin/phpunit # run test suite with another PHPUnit version $ PHPUNIT_VERSION=10 vendor/bin/phpunit
覆盖默认配置
您可以通过创建一个.env.local
文件来覆盖默认环境变量,以轻松启用不同的组合
# .env.local DATABASE_URL="postgresql://zenstruck:[email protected]:5433/zenstruck_foundry?serverVersion=15" # enables postgreSQL instead of MySQL MONGO_URL="" # disables Mongo USE_DAMA_DOCTRINE_TEST_BUNDLE="1" # enables dama/doctrine-test-bundle PHPUNIT_VERSION="11" # possible values: 9, 10, 11, 11.4 # run test suite with postgreSQL $ vendor/bin/phpunit
.env.local
文件还可以用于覆盖数据库容器的端口,如果它不符合您的本地要求。您还需要覆盖docker compose配置
以下是一个使用MySQL在端口3308
上的示例
# docker-compose.override.yml version: '3.9' services: mysql: ports: - "3308:3306"
# .env.local DATABASE_URL="mysql://root:[email protected]:3308/foundry_test?serverVersion=5.7.42"
在本地运行文档检查器
本节提供了如何在您的机器上本地运行包含在Docker镜像中的文档检查器的指南。这个检查器旨在验证并确保文档语法符合所需的标准。
以下命令在本地目录中运行检查器
docker run --rm -it -e DOCS_DIR='/docs' -v ${PWD}/docs:/docs oskarstark/doctor-rst:latest
致谢
单元测试的AAA风格的测试首先由Adam Wathan在Test Driven Laravel Course中介绍。这个库API的灵感来自Laravel factories和christophrumpel/laravel-factories-reloaded。