Я пытаюсь выполнить модульное тестирование своего контроллера (структура 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