Codeception / Doctrine2: вызов 'grabEntityFromRepository' до 'canSeeInRepository' приводит к сбою последнего - PullRequest
0 голосов
/ 28 июня 2018

Странный. Я тестирую REST API с использованием Codeception и Symfony4 / Doctrine2.

Если в тесте один вызов $I->canSeeInRepository(...);, он работает нормально.

Однако, если я сделаю вызов $I->grabEntityFromRepository(...); (который работает нормально) перед выполнением этого вызова, вызов $I->canSeeInRepository(...); завершится неудачей.

Кажется, это какая-то проблема доктрины.

Кто-нибудь может пролить свет? Большое спасибо.

/**
 * @param ApiTester $I
 */
public function testConvertOfferToTemplate(ApiTester $I)
{
    $I->haveHttpHeader('Content-Type', 'application/x-www-form-urlencoded');

    /** @var \App\ServiceProviderBundle\Entity\Offer $offer */
    $offer = $I->grabEntityFromRepository(\App\ServiceProviderBundle\Entity\Offer::class, [
        'notes' => 'SOME NOTES - Custom Offer final draft',
        'dateArchived' => null,
    ]);

    $I->sendPOST('/offer-templates', json_encode([
        'name' => 'Codeception Created Template From Offer',
        'offer_id' => $offer->getId(),
    ]));

    $json = array(
        'offer_template' =>
            array(
                'name' => 'Codeception Created Template From Offer',
                'charge_period' => $offer->getChargePeriod(),
                'charge_amount' => $offer->getChargeAmount(),
                'charge_currency' => $offer->getChargeCurrency(),
                'terms' => $offer->getTerms(),
                '_embedded' =>
                    array(),
            ),
    );

    $I->seeResponseContainsJson($json);

    $I->canSeeInRepository(\App\ServiceProviderBundle\Entity\OfferTemplate::class, [
        'name' => 'Codeception Created Template From Offer', // FAILS
    ]);

}

/**
 * @param ApiTester $I
 */
public function testOfferCreatedFromTemplate(ApiTester $I)
{
    $I->canSeeInRepository(\App\ServiceProviderBundle\Entity\OfferTemplate::class, [
        'name' => 'Codeception Created Template From Offer', // PASSES
    ]);
}
...