【问题标题】:Suppressing the request when running PHPUnit with Kohana 3.2使用 Kohana 3.2 运行 PHPUnit 时抑制请求
【发布时间】:2023-03-14 22:00:01
【问题描述】:

我在 Kohana 3.2 中正确设置单元测试时遇到问题。

我安装了 PHPUnit。我更改了引导程序以激活 Kohana 的单元测试模块。我还将 index.php 文件更改为如下所示:

if ( ! defined('SUPPRESS_REQUEST'))
{
    echo Request::factory()
        ->execute()
        ->send_headers()
        ->body();
}

我在我的应用程序文件夹中创建了一个文件夹测试。在其中,我插入了一个 phpunit.xml 文件,如下所示:

<phpunit colors="true" bootstrap="../../index.php">
<testsuites>
    <testsuite name="Kohana Tests">
        <directory>./</directory>
    </testsuite>
</testsuites>

我有两个问题(第一个是我真正需要回答的问题):

1- 当我从命令行进入测试并尝试运行 phpunit 时,似乎 SUPPRESS_REQUEST 永远不会设置为 true。请求被执行,因此不运行任何测试。我能够成功运行测试的唯一方法是暂时注释掉 index.php 中的整个 Request::factory() 行。有谁知道如何解决这个问题?如果我应该在某处添加一个 define('SUPPRESS_REQUEST', true) ,我应该在哪里做呢?我是 Kohana 和 PHPUnit 的新手。

2- PHPUnit 抱怨没有设置变量 REMOTE_ADDR。

PHP Notice:  Undefined index: REMOTE_ADDR in
/Users/**/Sites/root/application/bootstrap.php on line 76

这实际上不是一个大问题,因为尽管如此,测试似乎仍在运行,但我想知道是否有人知道我是否应该在某个特定的地方设置这个变量。

【问题讨论】:

    标签: phpunit kohana-3.2


    【解决方案1】:

    在 modules/unittest 中有一个名为 bootstrap.php 的文件,它与 phpunit 完美配合。

    引用该引导程序的我的 phpunit.xml 是这样的:

    <?xml version="1.0" encoding="UTF-8"?>
    <phpunit colors="true" bootstrap="../../modules/unittest/bootstrap.php">
        <testsuites>
            <testsuite name="Kohana Tests">
                <directory>./</directory>
            </testsuite>
        </testsuites>
    </phpunit>
    

    另外,对于 REMOTE_ADDR 问题,当 phpunit 运行 PHP 的 CLI 版本时,我认为它无法访问 REMOTE_ADDR 变量。如果您查看 unittest 中的引导程序,它不会使用与 http 相关的全局变量。

    我不确定为什么必须在引导程序中运行 Request::factory 代码。在我的 vanilla 3.2 安装中,Request::factory 代码位于 index.php 而不是 bootstrap.php 中,并且没有任何对 SUPRESS REQUEST 的引用。您可能有一些来自 3.2 之前的安装的挥之不去的文件需要清理。

    【讨论】:

    • 谢谢你,你是对的,这确实是问题所在。我正在关注一个指向 index.php 的教程(这实际上是我的 Request::factory 所在的位置 - 如果不清楚,请抱歉)。将其指向测试引导程序解决了问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多