gpt4 book ai didi

symfony - 如何测试 Symfony 中的事件已调用 EventListener?

转载 作者:行者123 更新时间:2023-12-02 10:05:24 26 4
gpt4 key购买 nike

我拥有的:

我有一个 EventListener 来监听 Symfony 中的 PreRemove 实体事件。

services:
my_bundle.entity_listener.my_listener:
class: 'MyCompany\MyBundle\MyListener'
public: false
tags:
- { name: doctrine.orm.entity_listener, entity: 'MyCompany\MyBundle\Entity\MyEntity', event: preRemove }

我想要什么:

我想要一个测试(功能/集成/单元或任何其他真正的),以某种方式检查当 MyEntity 被删除时是否正在调用特定的 EventListener。

更新

我不想在单元测试中执行此操作,需要实际检查事件调度程序是否真的会调用该特定事件的特定事件监听器。

更新2

我认为这是显而易见的,但似乎并非如此 - 解决方案不应修改 EventListener 或 Event。

更新3

我指定我不关心测试的名称是什么:功能、单元或任何其他。

更新4

解决方案必须保证测试在任何环境下都能通过。因此,如果有人扩展了我的包并弄乱了我的定义,我仍然应该能够验证事件处理是否确实有效。

此外,检查处理结果也不是一个选项,因为:

  1. EventListener 绝对可以做任何事情 - 在某些情况下,我可能无法简单地检查结果并确定 EventListener 是否有效。

  2. 有人可能以几乎完全相同的方式处理事件,因此“结果”是相同的,但“方式”是错误的。

最佳答案

功能测试是为了测试功能;它并不是为了测试该功能的实现或该实现的配置。

像您建议的那样的测试将很脆弱并且不是很有用。

您可能想要测试事件监听器实现的功能。

关于symfony - 如何测试 Symfony 中的事件已调用 EventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44592195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com