コントローラ(Yiiフレームワーク)をユニットテストしようとしています。session_regenerate_id() - ユニットテストで送信済みのヘッダYiiコントローラ
/**
* @dataProvider provider
*/
public function testActionEdit_view_login($controller){
$user = new CWebUser;
$user->id = 978;
$identity = new UserIdentity('[email protected]', '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();
}
tearDownAfterClass()のsetUp()とob_end_clean()にob_clean()を追加しました。
まだヘッダーが送信されているというメッセージが表示されます。ファイルにスペースや改行はありません。特定のテストメソッドをコメントアウトすると、完全に動作します。 login()は問題を引き起こしているようです。
誰もがこの/多分コントローラーのユニットテストを違う方法で防止する方法を知っていますか?
おかげで、 MRB
どのようにそれらを見つけましたか?私は同じ問題に悩まされていますが、ファイルが入っている場所はどこにも見えません。 – Hippyjim