DeepCopy:: recursiveCopy исключение, когда я запускаю codeception с Yii2 framework


При запуске codeception я получил много ошибок: DeepCopyDeepCopy:: recursiveCopy.

Это проблема, так запутать меня!

  1. я использую codeception play хорошо, когда у меня есть только 4 единичных теста: Введите описание изображения здесь
  2. Когда я все еще заполняю историю юнит-тестов, это происходит..
  3. в моем тестовом классе есть 5 модульных тестов, тогда я получил это: Введите описание изображения здесь

Вот код:

public function testGetComplexItemNeeds() {
    $this->specify('[getComplexItemNeeds] : ', function($expected) {
        $actual = commonservicesConfigService::getComplexItemNeeds('300001');

        expect('getComplexItemNeeds', $actual)->equals($expected);
    }, ['examples' => [
            [0 => [
                    'gold' => 1,
                    'list' => [
                        300018 => 1,
                    ],
                ]
            ],
    ]]);
}

Php_error.журнал:

PHP 195. DeepCopyDeepCopy:: copyArray ($array = array ('0000000025e4802e0000000050ab4f11' = > class testscodeceptionfrontendUnitTester { protected $scenary = class CodeceptionScenary { ... }; protected $friends = array (...) }, '0000000025e480490000000050ab4f11' => Codeception сценарий класса{ защищенный $тест = класс тестыcodeceptionинтерфейсуслугиConfigServiceTest { ... }; protected $steps = array (...);

Xdebug: я использую xdebug для отслеживания проблемы обнаружил, что когда функция specifyCloneProperties глубоко скопируйте unitTester php-скрипт вниз.

1 3

1 ответ:

Вы можете отключить глубокий клон в вашем файле bootstrap.php:

<?php
// disable deep cloning of properties inside specify block
\Codeception\Specify\Config::setDeepClone(false);
?>

Или включить / выключить в тесте. Это также повышает производительность ваших тестов.