0

我正在尝试在我的开发过程中引入单元测试,但我不知道该怎么做。

我有一个包含很多模块(分开的 js 文件)的大型应用程序。例如:

  • 视频信息.js
  • 可用视频.js
  • 可用Channels.js
  • 网络设置.js
  • …………

还有一些模块为其余的提供服务:

  • eventHandler.js
  • i18n.js
  • ajax.js
  • 配置.js
  • auth.js
  • baseModule.js
  • ...........

问题是:如何测试像videoInfo.js这样使用所有服务模块的模块?我看到两种方法:

  • 我只加载 videoInfo.js 并模拟所有内部接口。这样做的问题是,如果任何内部接口发生更改,我将不会捕获错误。
  • 我加载所有模块(整个应用程序)并使用真实的应用程序环境测试 videoInfo(将模拟的外部 AJAX 调用除外)

当您有很多内部依赖项时,这样做的好方法是什么?

4

1 回答 1

2

理想情况下,您希望在您的测试套件中使用这两种方法。

您想模拟所有依赖项(在您的 videoInfo.js 示例中),以便您可以将其代码与其他任何内容隔离,并确保它正常工作。根据您拥有的代码设计,这可能很困难。由于代码可能没有在编写时考虑到测试,因此不适合模拟。

您还希望拥有完整的应用程序级别系列测试,以确保各部分之间的所有交互都能正常工作。根据应用程序的不同,由于依赖于您无法控制的数据,这些测试可能非常脆弱。

这些测试可能会在单独的套件中,以便它们可以彼此独立地运行。

如果您刚刚开始编写代码测试,请尽可能编写最好的测试。测试是代码,应该随着你的进行而重构。尽可能编写最简单的测试。为遗留代码编写测试非常困难。当前的设计可能难以正确测试。因此,当您进行更改时,请尽您所能。

于 2013-02-12T14:05:41.520 回答