Fab*_*lio 11 php phpunit unit-testing laravel-4
我有一个奇怪的问题当我parent::setUp()在我的TestCase类上调用单元测试一个类时,我运行phpunit时它会抛出这个错误:
1)MatchRequestRepositoryTest :: test_find_requests_by_match_id ErrorException:session_start():无法发送会话cookie - 已经发送的头文件(输出从/var/www/project.dev/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:459开始)
可能是什么问题?谢谢你的帮助.
Dar*_*ook 23
(更新:感谢Louis Charette的评论,这只适用于php 7.1及更早版本(并且阅读错误报告,听起来像是他们不打算修复的回归.因此,更好的解决方案是Jeff Puckett(https:/ /stackoverflow.com/a/38045422/841830),--stderr在命令行上给出了标志phpunit.这样可以保存代码的stdout,phpunit的stderr,这样它们就不会发生冲突.)
问题是你有一些代码,可能深入你使用的框架,调用session_start().反过来,这又想发送一个cookie.但PHPUnit已经开始将输出写入stdout.
这里要理解的是,这只是一个单元测试,没有人关心标题.所以只需抑制错误信息.在不改变被测系统的情况下,这样做的方法是在自己的单元测试中调用session_start()(在parent::setUp()setUp函数之前或之内).并使用@前缀来抑制错误.例如
function setUp() {
@session_start();
parent::setUp();
...
}
Run Code Online (Sandbox Code Playgroud)
Jef*_*ett 22
PHPUnit中处理的一种方法是将输出发送到stderr,而不是stdout因为被证明了这个答案.
phpunit --stderr
Run Code Online (Sandbox Code Playgroud)
或者通过添加stderr="true"您的phpunit.xml,如此评论中指出的那样.
| 归档时间: |
|
| 查看次数: |
9268 次 |
| 最近记录: |