在 PHPUnit 的不同命名空间中创建 class 的模拟
Create a mock of a class in a different namespace in PHPUnit
我想在不同的命名空间中创建 class 的模拟。我尝试了以下代码
$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
有没有办法在不同的命名空间中创建模拟?
目前您无法在模拟 class 中指定命名空间。
是一个 open issue.
The setMockClassName() method does not expect a namespace because
PHPUnit automatically creates mocks in the same namespace as the class
being mocked. We should probably add some validation here so you don't
see the PHP error, though.
在 github 问题中讨论了相同的解决方法,请检查是否有适合您的方法。然而,这(在同一个命名空间中)不会产生任何错误:
public function testMockedNameSpace()
{
$fake = $this
->getMockBuilder('Acme\DemoBundle\Tests\GlobalFakeTestBlock')
->setMockClassName('FakeTestBlock')
->getMock();
}
希望对您有所帮助
我想在不同的命名空间中创建 class 的模拟。我尝试了以下代码
$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
有没有办法在不同的命名空间中创建模拟?
目前您无法在模拟 class 中指定命名空间。 是一个 open issue.
The setMockClassName() method does not expect a namespace because PHPUnit automatically creates mocks in the same namespace as the class being mocked. We should probably add some validation here so you don't see the PHP error, though.
在 github 问题中讨论了相同的解决方法,请检查是否有适合您的方法。然而,这(在同一个命名空间中)不会产生任何错误:
public function testMockedNameSpace()
{
$fake = $this
->getMockBuilder('Acme\DemoBundle\Tests\GlobalFakeTestBlock')
->setMockClassName('FakeTestBlock')
->getMock();
}
希望对您有所帮助