Я пытаюсь протестировать мой контроллер (фреймворк 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 ().
Тем не менее я получаю сообщение, что заголовки уже отправлены. В файле нет пробелов или новых строк, когда я закомментирую конкретный метод теста, он работает отлично. Кажется, проблема в том, что login ().
У кого-нибудь есть идеи, как предотвратить это / может быть, модульное тестирование контроллера по-другому?
Спасибо,
МРБ