zenstruck/foundry

一个用于创建具有表达力、自动完成、按需开发/测试固定数据的模型工厂库,适用于Symfony和Doctrine。

资助包维护!
kbond

安装次数: 5,048,960

依赖项: 62

建议者: 2

安全: 0

星标: 636

关注者: 9

分支: 69

开放问题: 42

v2.0.9 2024-09-02 18:20 UTC

README

CI Status Code Coverage Latest Version Downloads

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

阅读文档 升级到v2的指南

如何贡献

运行测试套件

这个库的测试套件需要一个或多个数据库,然后它包含一个docker compose配置。

注意

需要在本地上安装Docker和PHP(带有mysqlpgsqlmongodb扩展)。

您可以使用以下命令启动容器并运行测试套件

# 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 WathanTest Driven Laravel Course中介绍。这个库API的灵感来自Laravel factorieschristophrumpel/laravel-factories-reloaded