Пустое отношение доктрины Symfony в поведенческих тестах

У меня проблема с behat в symfony 2. У меня есть две сущности:

//Сделка

DM\MultiStepFormBundle\Entity\Transaction: тип: сущность репозиторийКласс: DM\MultiStepFormBundle\Repository\Transaction\TransactionRepository таблица: rb_multistepform_transaction

indexes:
    transaction_id_index:
        columns: [ transaction_id ]

id:
    id:
        type: integer
        generator: { strategy: AUTO }
fields:
    created_at:
        type: datetime
        nullable: false
    transaction_id:
        type: string
        length: 128
        nullable: false
    is_client_new:
        type: boolean
        options:
            default: false
    utm_source:
        type: string
        length: 255
        nullable: true
    utm_medium:
        type: string
        length: 255
        nullable: true
    utm_campaign:
        type: string
        length: 255
        nullable: true
    user_agent:
        type: text
        nullable: true
    http_referer:
        type: string
        length: 255
        nullable: true
    ip:
        type: string
        length: 32
        nullable: true
    status:
        type: smallint
        nullable: false
        options:
            default: 0
    continue_service_run:
        type: boolean
        nullable: false
        options:
            default: false           
    continue_serivce_run_datetime:
        type: datetime
        nullable: true

oneToMany:
    items:
        targetEntity: DM\MultiStepFormBundle\Entity\TransactionItem
        mappedBy: transaction
        cascade: [persist, merge, remove]

manyToOne:
    client:
        targetEntity: DM\KlienciBundle\Entity\Client
        inversedBy: multistepform_transactions
        joinColumn:
            name: client_id
            referencedColumnName: id

//ЭлементТранзакции

DM\MultiStepFormBundle\Entity\TransactionItem:
type: entity
repositoryClass: DM\MultiStepFormBundle\Repository\Transaction\TransactionRepository
table: rb_multistepform_transaction_item
id:
    id:
        type: integer
        generator: { strategy: AUTO }

indexes:
    partner_status_index:
        columns: [ partner_name, status ]

fields:
    type:
        type: smallint
        nullable: false
    partner_name:
        type: string
        length: 128
        nullable: true
    status:
        type: smallint
        nullable: false
        options:
            default: 0
    link_id:
        type: integer
        nullable: true
    product_id:
        type: integer
        nullable: true
    pixelconversion_hash:
        type: string
        length: 128
        nullable: true
    partner_api_response:
        type: json_array
        nullable: true
    clicked:
        type: boolean
        nullable: false
        options:
            default: 0
    clicked_datetime:
        type: datetime
        nullable: true
    order_nr:
        type: integer
        nullable: true
    highlighted:
        type: boolean
        nullable: false
        options:
            default: false

manyToOne:
    transaction:
        targetEntity: DM\MultiStepFormBundle\Entity\Transaction
        inversedBy: items
        cascade: [persist, merge, remove]
        joinColumn:
            name: transaction_id
            referencedColumnName: id

Когда я тестирую сервис, где у меня есть такие циклы:

$transactions = $this->transactionRepository->getTransactionsByContinueServiceRunInDateRange(0, $minDateTime, $maxDateTime);

foreach ($transactions as $transactionKey => $singleTransaction) {
    //in this place, relationships are not taken 
    $transactionItems = $singleTransaction->getItems();       
    //when it performs a test query items are downloaded correctly
    $transactionItemsQuery = $this->transactionRepository->getItems($singleTransaction->getId());
}

В котором мне нужно получить элементы из обратного отношения. При обычном вызове сайта в symfony отношения правильные и все ок. В случае активации test in behat отношения в переменной $transactionItems представляют собой пустую коллекцию. Данные наверняка существуют в базе данных, потому что в переменной $transactionItemsQuery, когда я получаю данные из запроса, у меня есть правильные данные.

Кто-нибудь когда-нибудь сталкивался с чем-то подобным в поведении?

Вы уверены, что Behat обращается к той же БД? Обычно Behat обращается к тестовой базе данных. Проверьте, есть ли у вас файл config_dev.yml с другими данными соединения/имени БД.

gvf 22.03.2019 17:55

У меня есть другая база данных для тестирования, и в переменной $transactions у меня есть данные, которые я добавил в тесте.

Grzegorz 23.03.2019 19:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
142
0

Другие вопросы по теме