【发布时间】:2015-11-23 13:37:48
【问题描述】:
我正在尝试在 TYPO3 和整体范围内理解功能测试的概念。
我的目的是测试我的扩展控制器。为简单起见,我们假设它只有两种方法:listAction() 和 addAction($object)。
我检查了一些核心测试,其中一个是来自 Extbase 的 EnableFieldsTest,它执行以下操作:加载一些特制的扩展,模拟 FE(通过特殊的 JsonRenderer.ts),调用该扩展的 listAction() 和然后检查输出(特别是 JSON)。
所以,我决定对我的控制器做同样的事情,模拟 FE,它叫我的listAction()。唯一的区别是我的扩展不使用 JSON View,而是使用通常的 Fluid,它会生成 HTML。
为了使其按预期工作,我需要:
- 对我的扩展进行重大更改,因此它在测试上下文中输出 JSON,但这对我来说似乎有点 hacky。
- 不要使用 Core 提供的
HasRecordConstraint,而只是检查使用assertContains()输出的 HTML,这似乎也很老套。 - 创建我的扩展的自定义版本,它输出预期的 JSON 并仅将其用作 Fixture。但这使得这样的测试毫无用处。
因此我被困在这一点上,需要理解:
- 是像我一样模拟 FE 请求,还是我现在已经脱离了功能测试的概念?
- 如果我想通过
addAction($object)测试对象创建并确保 f.e.向 REST 服务发出请求,我应该存根该服务还是可以以某种不同的方式捕获呼叫?
【问题讨论】:
-
这实际上取决于您要测试的内容。你会期望什么样的失败状态,例如你的考试应该什么时候休息。如果您想测试前端,您应该使用专用工具(selenium 或任何其他验收测试套件)。
-
@pgampe,谢谢你的解释。我想检查一下,我的
listAction()是否为当前登录的用户提供了一组正确的数据。而且你是对的 - 我在这里不需要 FE,因为我可以简单地在我的控制器中模拟view并期望使用特定的参数集调用它。