在PHPUnit中的不同命名空间中创建类的模拟

在PHPUnit中的不同命名空间中创建类的模拟,php,unit-testing,mocking,phpunit,Php,Unit Testing,Mocking,Phpunit,我想在不同的命名空间中创建一个类的模拟。我尝试了以下代码 $fake = $this->getMockClass( __NAMESPACE__ . '\FakeTestBlock', array(), array(), '\NewNameSpace\GlobalFakeTestBlock' ); 但是我得到了以下错误 PHPUnit\u Framework\u异常:解析错误:解析错误,在/path/to/vendor/PHPUnit/PHPUnit mock objects/sr

我想在不同的命名空间中创建一个类的模拟。我尝试了以下代码

    $fake = $this->getMockClass( __NAMESPACE__ . '\FakeTestBlock', array(), array(), '\NewNameSpace\GlobalFakeTestBlock' );
但是我得到了以下错误

PHPUnit\u Framework\u异常:解析错误:解析错误,在/path/to/vendor/PHPUnit/PHPUnit mock objects/src/Framework/MockObject/Generator.php(335):eval()第1行的代码中应为“标识符(T\u字符串)”


有没有办法在不同的命名空间中创建mock?

目前,您无法在mock类中指定命名空间。 这是一个很好的例子

setMockClassName()方法不需要命名空间,因为 PHPUnit自动在与类相同的命名空间中创建mock 被嘲笑。我们可能应该在这里添加一些验证,这样您就不会 不过,请参见PHP错误

在github问题中,我们讨论了相同的解决方法,检查是否有什么对您有利。但是,这(在同一命名空间中)不会产生任何错误:

public function testMockedNameSpace()
{
    $fake = $this
             ->getMockBuilder('Acme\DemoBundle\Tests\GlobalFakeTestBlock')
             ->setMockClassName('FakeTestBlock')
             ->getMock();

}

希望这有帮助

谢谢。我有点怀疑这一点。现在我必须看看我是否可以使用这里提到的任何解决方法。看起来这个问题现在已经解决了。那么,如果您所需要的类中有名称空间,那么我说在可测试代码中没有办法使用get_类,对吗?在我的例子中,我想检查配置是否已定义,并且配置的键使用类名。。。如果那不可能,那真是一个令人沮丧的问题。也许值得在PHPUnit请求时再提出一个问题。