【发布时间】: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