【问题标题】:Mock namespaced class with SimpleTest使用 SimpleTest 模拟命名空间类
【发布时间】:2013-11-02 10:47:35
【问题描述】:

我正在使用 SimpleTest 对我的 PHP 类进行单元测试。我添加了一个自定义基类,它执行spl_autoload_register 来自动加载我需要的类。

但是现在模拟变成了一个问题。如何模拟通过命名空间加载的类?

这基本上是我的测试课中的内容。

<?php
require_once('../../GGUnitTestCase.php');

Mock::generate('\Core\Routes\GGRoute');

class TestGGRouter extends GGUnitTestCase
{    
    function TestMethod()
    {
        $route = new \Core\Route\GGRoute(); // <-- This loads up fine!

        // But i need a Mock class, not the real one.
        // How to load a Mock in this case?
        $routeMock = new \Core\Routes\MockGGRoute(); // <-- Doesn't work!

        $this->assertTrue(false);
    }
}
?>

任何人知道我如何仍然可以模拟通过命名空间加载的类(自动加载)?

【问题讨论】:

  • 这不能解决你的问题,但现在没有人使用 SimpleTest。考虑切换到 PHPUnit。这是事实上的行业标准。
  • @Gordon 您可能是对的,但我发现使用该数据包管理器设置 PHPUnit 很麻烦。而且我还在使用一个不允许我安装任何第三方应用程序的托管帐户。
  • @Vivendi 您可以将 PHP 单元下载为 PHAR 存档,这是一个简单的类似 ZIP 的文件,其中包含 PHP 单元使用的所有必要文件。
  • @raina77ow 是的,这行得通,谢谢。您可以将此作为答案发布吗?
  • @ComFreek 我的主机的 PHP 版本似乎支持 Phar 文件。我也会尝试看看 PHPUnit,谢谢你的建议。

标签: php simpletest spl-autoload-register


【解决方案1】:

:: 替换命名空间类名称中的\(除了前面的一个)。在您的示例中,这将是...

Mock::generate('Core::Routes::GGRoute');

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 2011-08-16
    • 2020-04-11
    • 2015-09-17
    相关资源
    最近更新 更多