DavidBadura/fixtures

一个用于加载yaml、json或php测试数据的库。易于扩展,解析对象依赖并验证对象。

1.3.2 2022-04-26 15:36 UTC

README

Build Status Latest Stable Version Total Downloads License

特性

  • 使用类似 fzaninotto/Faker 的服务,一个为你生成伪造数据的PHP库
  • 自动解析对象依赖(也支持双向引用)
  • 可配置的默认测试数据转换器(构造函数、属性、set*和add*方法)
  • 轻松创建自己的转换器
  • 多种测试数据加载器:Yaml、Json、Tommel和PHP
  • 通过事件扩展(目前使用symfony/event-dispatcher
  • 通过标签过滤测试数据
  • 对象验证(目前通过事件使用symfony/validator
  • 使用Doctrine ORM、Doctrine MongoDb或Propel持久化测试数据
  • 轻松添加自己的持久化器
  • 使用symfony/expression-language的表达式语言

待办事项

  • 添加命令行功能。
  • 翻译文档(我的英语真的很差 ;))
  • 编写文档

文档

安装

您可以通过composer轻松安装此包

composer require 'davidbadura/fixtures'

使用方法

首先,您必须在yaml、json、toml、php或混合格式中创建测试数据文件。在这个例子中,我们有不同的格式

YAML

user:
  properties:
    class: DavidBadura\Fixtures\TestObjects\User
    constructor: [name, email]
  data:
    david:
      name: "David Badura"
      email: "d.badura@gmx.de"
      group: ["@group:owner", "@group:developer"]
      role: ["@role:admin"]
    other:
      name: "Somebody"
      email: "test@example.de"
      group: ["@group:developer"]
      role: ["@role:user"]

PHP

<?php

return array(
            'role' =>
            array(
                'properties' =>
                array(
                    'class' => 'DavidBadura\\Fixtures\\TestObjects\\Role',
                ),
                'data' =>
                array(
                    'admin' =>
                    array(
                        'name' => 'Admin',
                    ),
                    'user' =>
                    array(
                        'name' => 'User',
                    ),
                ),
            )
        );

JSON

{
    "group": {
        "properties": {
            "class": "DavidBadura\\Fixtures\\TestObjects\\Group"
        },
        "data": {
            "developer": {
                "name": "Developer",
                "leader": "@@user:david"
            }
        }
    }
}

您可以使用以下表达式引用其他对象:@{fixture-name}:{fixture-key}。引用将自动解析。

支持的其他格式,您可以在加载器部分中阅读。

您可以在转换器部分中了解测试数据管理器如何将测试数据转换为对象。您可以使用默认的测试数据转换器或编写自己的转换器。

加载测试数据

现在,您可以加载测试数据,创建对象并将它们持久化到数据库中。为此,我们使用默认的测试数据管理器。

use DavidBadura\Fixtures\FixtureManager\FixtureManager;

// $objectManager can be curently Doctrine ORM Entity Manager or other Doctrine DocumentManager like MongoODM or CouchODM
$fixtureManager = FixtureManager::createDefaultFixtureManager($objectManager);

$fixtureManager->load('path/to/fixtures');

您可以轻松实例化自己的测试数据管理器。有关更多信息,请参阅测试数据管理器文档。