首页 > 解决方案 > 配置 Symfony 5.3 以使用专用的 MongoDB 数据库进行测试

问题描述

我是 Symfony (5.3) 的新手,我想在我的存储库上进行一些 phpunit 测试。MongoDB 数据库通过教义/mongodb-odm-bundle (4.3) 使用。

关键是我无法将我的固定装置发送到测试数据库中。他们将使用我用于开发的默认设置。

我想我可以配置学说_mongodb.yaml,但现在我没有找到让它工作的方法。

我不确定它是否重要,但我的文档映射如下:

<?php

namespace App\Document;

use App\Document\EstablishmentDateStoreDocument;
use App\Document\GroupDocument;
use Doctrine\ODM\MongoDB\Mapping\Annotations as ODM;
use Symfony\Component\Uid\Uuid;

/**
 * 
 * @ODM\Document(db="database_local", collection="establishment",repositoryClass=EstablishmentRepository::class)
 * 
 */
class EstablishmentDocument
{
    /**
     * @ODM\Id(type="string")
     */
    private $id;

    /**
     * @ODM\Field(type="string")
     */
    private string $uuid;

.....

和我的学说_mongodb.yaml :

doctrine_mongodb:
    auto_generate_proxy_classes: true
    auto_generate_hydrator_classes: true
    connections:
        default:
            server: '%env(resolve:MONGODB_URL)%'
            options: {}
    default_database: '%env(resolve:MONGODB_DB)%'
    document_managers:
        default:
            auto_mapping: true
            mappings:
                App:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Document'
                    prefix: 'App\Document'
                    alias: App

不幸的是,我没有找到很多关于该主题的资源(测试/Symfony/MongoDB)。非常感谢你的帮助。

标签: databasemongodbsymfonytestingphpunit

解决方案


你应该使用这个包:https ://github.com/liip/LiipTestFixturesBundle

然后在你的 framework.yml 文件中使用这个配置:

liip_test_fixtures:
    cache_db:
         sqlite: liip_test_fixtures.services_database_backup.sqlite

您所有的固定数据都加载到本地 sqlite 数据库中。


推荐阅读