我想在不同的命名空间中创建一个类的模拟。我尝试了以下代码
$fake = $this->getMockClass( __NAMESPACE__ . '\FakeTestBlock', array(), array(), '\NewNameSpace\GlobalFakeTestBlock' );
但是我收到以下错误
PHPUnit_Framework_Exception: Parse error: parse error, expecting `"identifier (T_STRING)"' in /path/to/vendor/phpunit/phpunit-mock-objects/src/Framework/MockObject/Generator.php(335) : eval()'d code on line 1
有没有办法在不同的命名空间中创建模拟?
答案 0 :(得分:2)
目前,您无法在模拟类中指定命名空间。 是open issue。
setMockClassName()方法不期望命名空间,因为 PHPUnit自动在与类相同的命名空间中创建模拟 被嘲笑。我们应该在这里添加一些验证,这样你就不会 但是,请参阅PHP错误。
在github问题中讨论相同的解决方法,检查一些东西对你有用。但是(在相同的命名空间中)不会出现任何错误:
public function testMockedNameSpace()
{
$fake = $this
->getMockBuilder('Acme\DemoBundle\Tests\GlobalFakeTestBlock')
->setMockClassName('FakeTestBlock')
->getMock();
}
希望这个帮助