我正在尝试在 phpspec 中测试一个类。该类是在 ZF2 中使用的常规服务类。
class GuestService implements ServiceLocatorAwareInterface
{
public static function createWithServiceManager(ServiceLocatorInterface $serviceLocator)
{
$guestService = new GuestService();
$guestService->setServiceLocator($serviceLocator);
return $guestService;
}
public function setServiceLocator(ServiceLocatorInterface $serviceLocator)
{
$this->services = $serviceLocator;
}
}
我的规格是:
class GuestServiceSpec extends ObjectBehavior
{
function let(ServiceLocatorInterface $serviceManager)
{
$this->beConstructedThrough('createWithServiceManager' , [$serviceManager]);
}
}
我很难理解 phpspec 将如何首先创建 serviceManager 对象来调用构造函数。在 Zend 中,我有一个工厂闭包,它允许这种构造与上面给出的静态方法非常相似。
我在phpspec 手册中看到了一个对象构造示例,它使用 Writer 对象传递给构造函数。然而,它没有解释这个 Writer 对象是如何创建的。
我可以在该页面上看到将对象传递给 phpspec 函数的类似示例。
function it_does_something_if_argument_is_false(Writer $writer)
{
$this->beConstructedWith($writer, false);
// constructed with second argument set to false
// ...
}
但它没有解释 Writer 对象本身是如何构造的。serviceManager 将如何构建?