- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试对我的 Controller (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() 中。
我仍然收到 header 已发送的消息。文件中没有空格或换行符,当我注释掉具体的测试方法时,它工作得很好。 login() 似乎导致了这个问题。
有人知道如何防止这种情况/也许以不同的方式对 Controller 进行单元测试吗?
谢谢,B先生
最佳答案
在调用 $user->login
之前,添加以下代码:
$mockSession = $this->getMock('CHttpSession', array('regenerateID'));
Yii::app()->setComponent('session', $mockSession);
这会使用不执行任何操作的方法覆盖 regenerateID
方法。
将 ob_start()
添加到 Bootstrap 也可以,但在一切完成之前 PHPUnit 不会输出。
使用此方法,您仍然可以看到正在发生的进度。
我从 Yii 1.1.7 升级到 1.1.10,并且在 1.1.8 中添加了 regenerateID
方法,所以今天遇到了这个错误。
关于session_regenerate_id() - 已在单元测试 Yii Controller 中发送的 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6756021/
今天小米米家官方微博宣布,小米手表尊享版开启限量定金预售,3 月 3 日早 10 点起支付尾款。购买即赠 399 元小米真无线蓝牙耳机 Air 2。 小米手表尊享版相比普通版核心没有变化,采用
今天下午,小米官方公布了小爱触屏音箱Pro 8,可以看到触控屏幕尺寸比较大,音箱上“长”了一个平板。据悉,小米小爱触屏音箱Pro 8具有白色的配色设计,下方有一个长条状的扬声器,上方带有一个尺寸比较
我是一名优秀的程序员,十分优秀!