在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请求时再提出一个问题。