session_regenerate_id () - заголовки уже отправлены при модульном тестировании контроллера Yii

Я пытаюсь выполнить модульное тестирование своего контроллера (структура Yii).

/** 
   * @dataProvider provider
   */
  public function testActionEdit_view_login($controller){
    $user = new CWebUser;
    $user->id = 978;
    $identity = new UserIdentity('me@test.com', '123456');
    $user->login($identity);
    $controller->actionEdit();

    $output = ob_get_contents();
    assertContains('Add/Change Profile Picture:', $output);
    assertContains('bio', $output);
    assertContains('specialties', $output);
    assertContains('change login', $output);
    assertContains('New Password', $output);
  }

Когда я выполняю

$user->login($identity);

для входа в систему, я получаю следующую ошибку:

session_regenerate_id(): Cannot regenerate session id - headers already sent

Я уже пробовал буферизовать вывод, помещая это в начало класса:

public static function setUpBeforeClass(){
  ob_start();
}

Я также помещаю ob_clean () в setUp () и ob_end_clean () в tearDownAfterClass ().

Тем не менее, я получаю сообщение, что заголовки уже отправлены. В файле нет пробелов или новых строк, когда я комментирую конкретный метод тестирования, он работает отлично. Кажется, проблема возникает из-за входа в систему ().

У кого-нибудь есть идеи, как предотвратить это / может быть, модульное тестирование контроллера другим способом?

Спасибо, MrB

6
задан MrB 20 July 2011 в 01:29
поделиться