Задать вопрос
Mx21
@Mx21
Software engineer

Почему возникает проблема при тестировании unit-тестов, если несколько методов?

Здравствуйте!

Производится unit-тестирование проекта на yii2, с использованием codeception.

Выполняется команда:
php codecept.phar run --debug unit ExampleTest

Код теста:
<?php

class ExampleTest extends \Codeception\Test\Unit
{
    /**
     * @var \UnitTester
     */
    protected $tester;

    protected function _before()
    {
    }

    protected function _after()
    {
    }

    // tests
    public function testSomeFeature()
    {

    }

    public function testSomeFeature2()
    {

    }
}


В результате теста, на методе testSomeFeature2(), вываливается ошибка:
- ExampleTest: Some feature
  [Database] Transaction started
+ ExampleTest: Some feature (0.01s)
  [Database] Transaction cancelled; all changes reverted.
- ExampleTest: Some feature2
Fatal error: Cannot declare class Yii, because the name is already in use in C:\OSPanel\domains\yii2tests.loc\vendor\yiisoft\yii2\Yii.php on line 21


Если, тестировать только 1 метод, то все работает нормально.

Конфиг файлы.

unit.suite.xml
# Codeception Test Suite Configuration

# suite for unit (internal) tests.
# RUN `build` COMMAND AFTER ADDING/REMOVING MODULES.

class_name: UnitTester
modules:
    enabled:
      - Asserts
      - Yii2:
            configFile: 'tests/config/unit.php'
            part: [orm, email]


/tests/config/unit.php
<?php
/**
 * Application configuration for acceptance tests
 */
require(__DIR__ . '/../../vendor/autoload.php');
require(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');

return yii\helpers\ArrayHelper::merge(
    require(__DIR__ . '/../../config/web.php'),
    require(__DIR__ . '/config.php'),
    []
);


Почему появляется ошибка "Fatal error: Cannot declare class Yii, because the name is already in use", именно при тестировании нескольких методов и как ее исправить?
  • Вопрос задан
  • 382 просмотра
Подписаться 2 Простой 6 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы