battis / phpunit-sessions
用于处理PHP会话的PHPUnit扩展
v0.1.3
2024-03-18 16:17 UTC
Requires
- phpunit/phpunit: ^10.0
README
用于处理PHP会话的PHPUnit扩展
安装
composer require --dev battis/phpunit-sessions
配置
在phpunit.xml
中
<phpunit ... bootstrap="tests/bootstrap.php" > ... <extensions> <extension class="Battis\PHPUnit\Sessions\Extension" /> </extensions> </phpunit>
在tests/bootstrap.php
中
require_once __DIR__ . "/../vendor/autoload.php"; Battis\PHPUnit\Sessions\Bootstrap::execute();
工作原理
在PHP测试中使用会话和cookie时,存在两个基本问题
- PHPUnit从命令行运行,所以
$_COOKIES
和$_SESSIONS
不存在。 - PHPUnit在执行任何与会话相关的测试代码之前就开始输出,导致在发送头部之前发送输出等错误。
为了解决这个问题,此扩展在PHPUnit启动时启用输出缓冲区,将所有输出缓冲,直到最后一个测试运行完毕。(您失去的只是输出的即时性——您仍然会看到它,但只能在心跳停止的暂停之后。)
此外,当从CLI运行脚本时,$_SESSIONS
和$_COOKIES
被初始化为空数组,然后可以像通常一样操作。