2016-10-22 108 views
1

我已经编写了一个JavaScript库/模块,用于调用静默Web服务的API调用,并向该库的使用者提供方法。该库的构建方式使得相同的代码既可以用作前端库,也可以用作npm模块(使用browserify转换后的代码)。JavaScript和Mocha的单元测试

但是,我现在计划为同样的单元测试编写,这是我第一次编写整个库。所以,我已经看过像摩卡和茉莉花这样的图书馆,这似乎是它的好选择。我正在考虑在摩卡书写测试。但是,我不太清楚如何从这些测试开始。

此外,应该像测试用例那样测试功能的测试被称为集成测试,还是应该将这些测试与单元测试结合起来?

如果任何人都可以推荐一些Github的示例测试或一些摩卡初学者的教程,我会很高兴。我也很乐意考虑其他单元测试框架。

在此先感谢

+0

我增加了一个这一点,因为不确定为什么人们减去初学者的积分。 –

回答

1

我想到写在摩卡测试。但是,我不太清楚如何从这些测试开始。

单元测试通常只包括功能测试,不包括集成测试和回归测试,这意味着你应该测试每个功能尽可能即可。

一个基本的例子就是这样。

function alwaysReturnTrue(){ 
    return True; 
} 
assertTrue(alwaysReturnTrue()); 

关于单元测试框架,如mochaJasmine,他们只发起了一个框架来运行测试。其中大部分将提供基本的assert功能,如assertTrue,assertFalse,assertEqual等。

显然,那些断言方法不足以测试所有的角落案例。

  • 回调函数
  • 函数调用序列
  • 函数调用的参数
  • 触发例外
  • 假XHR或服务器

为了处理这些东西,它可以通过一个流行的完成解决方案,这被称为sinon


另外,应该测试样的试样消费者的功能性的测试被称为集成测试或应用的那些单元测试组合?

不,集成测试通常重复您的软件的整个序列,而不是一个单一的功能。那些东西也可以由sinon完成。(假XHR或服务器)

For example: without UI 
Login() -> Send exit request to serverlet -> Logout() 
Login() -> Send exit request with save="true" data to serverlet -> Logout() 

正如我上面提到的,我们还有哪些尚未讨论的另一个考验。它被称为回归测试这是最复杂的测试。有两个着名的UI测试库可以做到这一点,seleniumphantomjs

For example: with UI 
Login() -> Click Button Exit() -> Logout() 
Login() -> Click Checkbox A() -> Click Button Exit() -> Logout() 

总体而言,一个完整的软件测试过程有三个过程。但是,在现实世界中,时间是有限的。如果您的项目规模很小,则可能会跳过回归或集成测试。

step: unit test -> integration test -> regression test 
time: (short)  (longer)   (very long)