JavaScript单元测试。怎么样?

时间:2013-02-12 12:05:49

标签: javascript unit-testing qunit

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

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

  • videoInfo.js
  • availableVideos.js
  • availableChannels.js
  • networkSettings.js
  • .......

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

  • eventHandler.js
  • i18n.js
  • ajax.js
  • configuration.js
  • auth.js
  • baseModule.js
  • ........

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

这些测试可能位于不同的套件中,因此它们可以独立于其他套件运行。

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