gpt4 book ai didi

PhpStorm、PHPUnit 和 setcookie

转载 作者:可可西里 更新时间:2023-11-01 13:48:26 24 4
gpt4 key购买 nike

我正在尝试在一个非常好的 IDE PhpStorm 中使用 setcookie() 函数进行一些单元测试。但是我每次都会收到以下错误:

Cannot modify header information - headers already sent by (output started at /tmp/phpunit.php:418)

此错误的原因可能是在调用 setcookie() 之前使用 flush() 打印('some text')。但是刷新是在 PhpStorm 生成的/tmp/phpunit.php 文件中执行的。虽然 setcookie() 是从我的来源调用的。所以我不能编辑生成的文件来做某种输出缓冲。还有另一个时刻:PhpStorm 像这样执行/tmp/phpunit.php 脚本:

/usr/bin/php /tmp/phpunit.php -config /var/www/.../protected/tests/phpunit.xml d /var/www/.../protected/tests/unit/user

请帮我解决这个问题。如何直接从 PhpStorm 运行单元测试?

最佳答案

解决此问题的一种可能方法是使用“模拟”替代 setcookie() 函数。

这是单元测试中的一种常用技术,在这种情况下,您想要测试依赖于您不想影响当前测试的外部类或函数的内容。

方法是在单元测试代码中为 setcookie() 创建 stub 函数定义。这将在测试期间调用,而不是真正的 setcookie() 函数。具体如何实现此 stub 函数取决于您,并且取决于您的代码使用它的目的。

这种方法的主要问题是默认情况下 PHP 不允许您覆盖现有函数 - 如果您在标准 PHP 安装上尝试这样做,您将得到“错误:无法重新声明函数” .

这个问题的解决方案是PHP的Runkit extension ,它专为此类测试而设计,并允许您 rename an existing function ,包括内置的。

如果您在测试环境中配置 PHP 安装以包含 Runkit 扩展,您将能够进行此类测试。

希望对您有所帮助。

关于PhpStorm、PHPUnit 和 setcookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5470560/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com