在Eclipse中通过下面的代码片段使用PHPUnit时,我收到错误:
无法发送会话cookie - 已经发送的标头(输出已启动 在C:\ wamp \ bin \ php \ php5.3.13 \ pear \ PHPUnit \ Util \ Printer.php:172)
Session_start()在“LoginTest”中执行。如何阻止PHPUnit干扰会话cookie的生成?
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require_once 'C:\wamp\bin\php\php5.3.13\pear\PHPUnit\autoload.php';
class MyTestCase extends PHPUnit_Framework_TestCase {
static function main(){
$suite = new PHPUnit_Framework_TestSuite("LoginTest");
//$suite = new PHPUnit_Framework_TestSuite("FriendListTest");
//$suite = new PHPUnit_Framework_TestSuite("UserTest");
PHPUnit_TextUI_TestRunner::run($suite);
}
}
MyTestCase::main();
?>
Very similar problem with solution that won't let me debug in Eclipse.
答案 0 :(得分:3)
问题单元测试功能的顶部(或者如果所有功能都受到setUp()
,甚至public static function setUpBeforeClass()
的影响),请添加以下代码:
@session_start();
或者长篇:
$prev = error_reporting(0);
session_start();
error_reporting($prev);
它看起来像你永远不应该做的事情,但它在这里是完美的,因为抑制错误信息正是我们想要做的!
正如我在关于hakre答案的评论中所指出的那样,摆弄ini设置从来没有奏效,甚至在调用session_start()
之前没有尝试这个组合:
ini_set("session.use_cookies",0);
ini_set("session.use_only_cookies",0);
ini_set("session.use_trans_sid",1);
答案 1 :(得分:0)