【发布时间】:2015-12-04 20:11:50
【问题描述】:
我有一个具有公共属性的自定义事件:
class MyCustomEvent
{
public $allowAction = false;
}
我有一个创建这个事件的类,并用事件对象分派一个事件,允许事件侦听器/订阅者更改对象的属性。
class MyBizLogic
{
private $dispatcher;
public function __construct(EventDispatcher $dispatcher)
{
$this->dispatcher = $dispatcher;
}
public function doSomething()
{
$event = new MyCustomEvent();
$dispatcher = $this->dispatcher->dispatch('my_custom_event', $event);
if ($event->allowAction) {
// do action
} else {
// do something else
}
}
}
如何对doSomething 进行单元测试?我需要一种方法来控制事件对象的属性,但事件对象不是我可以模拟的依赖项。它是在我正在测试的方法中创建的。
我不认为这是一种设计气味,因为这是大多数开发人员发送事件的想象方式。我可以在这里做什么来正确测试doSomething 应该处理的不同结果?
【问题讨论】:
标签: php unit-testing phpunit drupal-8