2013-02-12 181 views
0

我试图在我的开发过程中引入单元测试,我不知道如何去做。JavaScript单元测试。什么模拟?

我有一个很大的应用程序模块(分开的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调用)

什么好办法,当你有一个这样做很多内部依赖?

回答

2

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

你想嘲笑所有的依赖关系(在你的videoInfo.js的例子中),以便你可以隔离它的代码和其他东西,并确保它的工作正常。根据您拥有的代码设计,这可能很困难。由于代码可能不是用测试编写的,所以不适合嘲笑。

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

这些测试可能会在单独的套件中,以便它们可以独立于其他每个运行。

如果您刚刚开始编写代码测试,请编写最适合您的测试。测试是代码,应该在进行时重构。写出最简单的测试,你可以。为遗留代码编写测试非常困难。目前的设计可能很难正确测试。所以,当你做出改变时,尽你所能。