如何检查特定生命周期事件方法是否在Doctrine事件订阅者中运行?

时间:2014-12-31 17:33:37

标签: symfony doctrine-orm phpunit lifecycle doctrine-odm

我在事件监听器中有一个preUpdate事件挂钩,我想编写一个测试,只是验证在更新特定文档时它是否被执行。我能够找到的关于测试与Doctrine相关的任何内容的唯一文档是关于测试查询构建器的。我是Doctrine的新手,这似乎是一件非常简单的事情,但我真的无法理解。

1 个答案:

答案 0 :(得分:1)

您可以使用partial mock。可以说具有preUpdate挂钩的类称为Entity。

$mock = $this->getMockBuilder('Mock')->setMethods(array('preUpdate'))->getMock();

这创建了一个对象,只有preUpdate方法是存根的,你可以写这个方法的期望:

$mock->expects($this->once())->method('preUpdate');
// some code that triggers the hook

该类的所有其他方法将与原始类一样 - 它们不会被覆盖