我应该在 TYPO3 的功能测试中模拟 FE 请求吗?

Should I simulate FE request in Functional Testing in TYPO3?

我试图在 TYPO3 的范围内和整体上理解功能测试的概念。

我的目的是测试我的扩展的控制器。为简单起见,我们假设它只有两种方法:listAction()addAction($object).

我检查了一些核心测试,其中之一是来自 Extbase 的 EnableFieldsTest,它执行以下操作:加载一些特殊制作的扩展,模拟 FE(通过特殊 JsonRenderer.ts),它调用 listAction() 然后检查该扩展的输出(specail JSON)。

所以,我决定对我的控制器做同样的事情,模拟 FE,它称为我的 listAction()。唯一的区别是我的扩展不使用 JSON View,而是使用通常的 Fluid,它会产生 HTML.

为了让它按预期工作,我需要:

  1. 对我的扩展进行重大更改,因此它在测试上下文中输出 JSON,但这对我来说似乎有点老套。
  2. 不要使用 Core 中提供的 HasRecordConstraint,而只需检查 HTML,这是用 assertContains() 输出的,这看起来也很老套。
  3. 创建我的扩展的自定义版本,输出预期 JSON 并仅将其用作 Fixture。但这使得这样的测试根本没有用。

因此我被困在这一点上,需要了解:

  1. 像我一样模拟 FE 请求是否正确,或者我现在已经脱离了功能测试概念?
  2. 以防我想通过 addAction($object) 测试对象创建并确保 f.e。已发出对 REST 服务的请求,我应该存根该服务还是可以以某种不同的方式接听电话?

从TYPO3 8开始,集成了验收测试,你想要的更多

  • 使用功能测试调用操作并检查其 return 值但不要使用前端
  • 使用验收测试调用前端并检查插件的 HTML 输出。

最好检查核心的验收测试。