battis/phpunit-sessions

用于处理PHP会话的PHPUnit扩展

v0.1.3 2024-03-18 16:17 UTC

This package is auto-updated.

Last update: 2024-09-13 02:03:56 UTC


README

codecov

用于处理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时,存在两个基本问题

  1. PHPUnit从命令行运行,所以$_COOKIES$_SESSIONS不存在。
  2. PHPUnit在执行任何与会话相关的测试代码之前就开始输出,导致在发送头部之前发送输出等错误。

为了解决这个问题,此扩展在PHPUnit启动时启用输出缓冲区,将所有输出缓冲,直到最后一个测试运行完毕。(您失去的只是输出的即时性——您仍然会看到它,但只能在心跳停止的暂停之后。)

此外,当从CLI运行脚本时,$_SESSIONS$_COOKIES被初始化为空数组,然后可以像通常一样操作。