Настройте Symfony 5.3 на использование выделенной базы данных MongoDB для тестирования

#database #mongodb #symfony #testing #phpunit

Вопрос:

Я новичок в Symfony (5.3) и хотел бы провести несколько тестов phpunit в своих репозиториях. База данных MongoDB используется через doctrine/ mongodb-odm-bundle (4.3).

Дело в том, что мне не удается отправить свои данные в тестовую базу данных. Они идут в стандартную базу данных, которую я использую для разработчиков.

Я полагаю, я могу настроить doctrine_mongodb.yaml, но прямо сейчас я не нашел способа заставить его работать.

Я не уверен, что это важно, но мой документ отображается следующим образом :

 <?php

namespace AppDocument;

use AppDocumentEstablishmentDateStoreDocument;
use AppDocumentGroupDocument;
use DoctrineODMMongoDBMappingAnnotations as ODM;
use SymfonyComponentUidUuid;

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

    /**
     * @ODMField(type="string")
     */
    private string $uuid;

.....

 

и мой doctrine_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: 'AppDocument'
                    alias: App
 

К сожалению, я не нашел много ресурсов по этой теме (testing/ Symfony / MongoDB). Большое спасибо за вашу помощь.

Комментарии:

1. «Я хотел бы провести несколько тестов phpunit в своих репозиториях» Означает, что вы не знаете, как это сделать, или у вас возникли проблемы с текущими тестами? Что конкретно вы тестируете? Что вы пробовали?

Ответ №1:

Вы должны использовать этот пакет: https://github.com/liip/LiipTestFixturesBundle

Затем с этой конфигурацией в вашем файле framework.yml:

 liip_test_fixtures:
    cache_db:
         sqlite: liip_test_fixtures.services_database_backup.sqlite
 

Все данные ваших устройств загружаются в локальную базу данных sqlite.