PHPUnit无法发送会话cookie-标头已发送

问题描述 投票:4回答:3

虽然在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.

php eclipse session phpunit
3个回答
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);

0
投票

如何阻止PHPUnit干扰会话cookie的生成?

大多数直接方法似乎都不在会话中使用Cookie:

http://php.net/session.use-cookies


0
投票

将以下内容添加到您的phpunit.xml

<php>
    <ini name="session.use_cookies" value="0" />
    <ini name="session.use_only_cookies" value="0" />
    <ini name="session.use_trans_sid" value="0" />
    <ini name="session.cache_limiter" value="" />
</php>
© www.soinside.com 2019 - 2024. All rights reserved.