2015-09-17 2 views
3

У меня есть более 1400 тестов для кодирования для приложения Laravel 5.1, которое я разрабатываю на данный момент. Я был использован Codeception 2.0.15. Но сегодня я перешел к Codeception 2.1.2. Я обновил api.suite.yml и другие файлы конфигурации набора, но многие тесты сейчас не работают.Сбой при отказе кода после обновления до версии 2.1

Первое, что я заметил, это то, что данные в memcached более не очищаются после тестов, поэтому тесты в данный момент влияют друг на друга. Но дело не только в этом. В одном из тестов я бегу что-то вроде этого:

public function tryToCompareClient(UnitTester $I) 
{ 
    $data = [ 
     'client1' => [ 
      'id' => 500, 
      'option1' => 'yes', 
     ], 
     'client2' => [ 
      'id' => 600, 
      'option2' => 'no', 
     ], 
    ]; 

    Config::set('crm_settings.clients', $data); 

    $crm = App::make('crm'); 

    $I->assertTrue($crm->isClient('client1', $data['client1']['id'])); 
    // ... 

Когда я запускаю только этот тест он работает нормально, но когда я запускаю множественным группу тестов, этот тест потерпит неудачу, потому что crm это синглтон в моем приложении, и кажется, что, когда я устанавливаю новую конфигурацию в вышеприведенных тестах, этот класс не загружает данные из конфигурации каждый раз, но только тогда, когда он не установлен. Кажется, что что-то было изменено в модуле Codeception/Laravel5, поэтому экземпляр App повторно используется между тестами.

На данный момент я предполагаю, что эти проблемы затронуты рефактором в this commit, но вопрос в том, есть ли простой способ заставить Codeception работать как раньше 2.1.2, или, может быть, единственный способ использовать ветвь старого 2.0 для такой функциональности ?

ответ

0

Кажется, что произошла ошибка в ветке 2.1. Это не работает в 2.1.4. После установки версии в composer.json до 2.1.x-dev он начал работать.

Однако 2,1 филиал имеет также другие вопросы:

  • не очистка кэша после каждого теста
  • проблемы с MySQL слишком много подключений ошибок при работе много тестов

поэтому на данный момент я рекомендую всем, кто хочет использовать 2.1 ветку для Laravel, используя 2.0, а не все проблемы будут исправлены.

Вы также можете указать track this discussion.

EDIT

Я могу подтвердить эти вопросы были решены в последнее 2.1.x-dev, так что теперь все, кажется, работает как в 2.0 ветви