miaou-corp/fixture-loader-bundle

使用 Doctrine 管理 Nelmio Alice 固定数据。

安装: 322

依赖者: 0

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:symfony-bundle

1.0.0 2018-11-04 18:16 UTC

This package is not auto-updated.

Last update: 2024-09-20 07:34:09 UTC


README

本扩展使用 Nelmio/Alice 生成固定数据。

使用 Symfony Flex 的应用程序

打开命令行,进入您的项目目录并执行

$ composer require --dev miaou-corp/fixture-loader-bundle

不使用 Symfony Flex 的应用程序

步骤 1:下载扩展

打开命令行,进入您的项目目录并执行以下命令以下载此扩展的最新稳定版本

$ composer require --dev miaou-corp/fixture-loader-bundle

此命令要求您全局安装 Composer,请参阅 Composer 文档中的安装章节

步骤 2:启用扩展

然后,通过将其添加到项目 app/AppKernel.php 文件中注册的扩展列表来启用该扩展

<?php
// app/AppKernel.php

// ...
class AppKernel extends Kernel
{
    public function registerBundles()
    {
        //...
        
        if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
            //...
            $bundles[] = new Nelmio\Alice\Bridge\Symfony\NelmioAliceBundle();
            $bundles[] = new MiaouCorp\Bundle\FixtureLoaderBundle\MiaouCorpFixtureLoaderBundle();
        }
    }

    // ...
}

步骤 3:配置扩展

# config_test.yml

# Do not use production database !
# SQLite in memory is recommended for tests speed.
doctrine:
    dbal:
        url: 'sqlite:///:memory:'

miaoucorp_fixture_loader:
    # This is where you fixture files are stored.
    directory: /path/to/directory # Default to: '%kernel.project_dir%/tests/Resources/fixtures'

重要提示:每次加载固定数据文件时,都会 删除并重建 数据库模式,因此 请勿在生产环境中使用...

使用方法

WebTestCase

$client = static::createClient();

// You might want to do this if you do multiple request on a single test
// As kernel is rebooted on each request, so your database and fixtures will be lost.
$client->disableReboot();

// Or static::$kernel->getContainer for a KernelTestCase
$client->getContainer()->get('miaoucorp.fixture_loader')->loadFile('my-fixture-file.yaml');

$client->request('GET', '/some-path');

// To keep some fixture in memory for later use:
// Where "user_1" is the fixture key.
$fixtures = $client->getContainer()->get('miaoucorp.fixture_loader')
    ->loadFile('my-fixture-file.yaml', ['user_1']);
    
$userId = $fixtures['user_1']->getId();