在PHPUnit的模拟构建器中,是否可以构建像这样的对象(即实现接口并同时使用trait)?
<?php
class FooClassThatD implements BarInterface
{
use BazTrait;
}
我认为使用原生的模拟对象方法是不可能做到这一点的,因为它们使用特定的模板来模拟一个带有不允许任何扩展点的特质的类。您可以轻松地通过一个测试专用的类来绕过它,从而构建您的模拟对象。
abstract class BarWithBazTraitTestClass implements BarInterface
{
use BazTrait;
}
$mock = $this->getMockForAbstractClass('BarWithBazTraitTestClass');
getObjectForTrait()
方法支持测试特征。该方法重用模拟对象代码生成器并返回使用正在测试的特征的类的对象。”-那是在2011年1月。那么你尝试过什么,因为这让我觉得答案是“是”,我想知道是否已经完成了。 - hakre`$foo = $this->getMockForTrait('BazTrait')->...; $this->assertInstanceOf('BarInterface', $foo);`
- Mateusz Charytoniuk