Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用SimpleTest模拟命名空间类_Php_Simpletest_Spl Autoload Register - Fatal编程技术网

Php 使用SimpleTest模拟命名空间类

Php 使用SimpleTest模拟命名空间类,php,simpletest,spl-autoload-register,Php,Simpletest,Spl Autoload Register,我正在使用SimpleTest对我的PHP类进行单元测试。我添加了一个自定义基类,它执行spl\u autoload\u寄存器来自动加载我需要的类 但现在嘲笑成了一个问题。如何模拟通过命名空间加载的类 这基本上就是我在测试课上学到的 <?php require_once('../../GGUnitTestCase.php'); Mock::generate('\Core\Routes\GGRoute'); class TestGGRouter extends GGUnitTestCas

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

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

这基本上就是我在测试课上学到的

<?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);
    }
}
?>
替换名称空间类中的
\
(除前面的一个以外的所有名称)。在您的示例中,这将是

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

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