当前位置:  开发笔记 > 编程语言 > 正文

您使用过哪些JavaScript单元测试和模拟框架?

如何解决《您使用过哪些JavaScript单元测试和模拟框架?》经验,为你挑选了4个好方法。

我的主要JavaScript框架是jQuery,所以我希望我的单元测试和模拟框架与之兼容.我宁愿不必介绍另一个JavaScript框架.

我目前正在使用QUnit进行单元测试,使用Jack进行模拟,但我对JavaScript的整个单元测试都很陌生.

有没有其他人有更好的建议工具?什么对你有用?



1> Charlie Flow..:

在撰写本文时,我认为Jack是JavaScript中最好的模拟框架.主要原因是,对于像Java这样的强类型语言来说,JavaScript的正确性是不可能的.

许多JavaScript模拟框架的灵感来自Java模拟框架(例如优秀的JsMockito).但是这些问题是它们需要依赖注入,因为这是在Java中使用模拟的唯一合理方法.但是在JavaScript中,有许多方法可以使用模拟,并且您不会被迫在任何地方使用依赖注入.

例如,使用JsMockito,您必须制作模拟,然后将这些模拟传递到您的被测软件(SUT).SUT必须直接调用模拟器.因此,您不得不将SUT编码为构造函数或函数,将其所有依赖项作为参数.(有时候,这是实现它的一种很好的方法,但不是在所有情况下.如果你的模拟框架的设计强制你的实现方法,那么尾巴正在摇尾巴).

在JavaScript中,很容易"劫持"任何功能.因此,有很多方法可以构建一些东西,这样你就可以模拟它的一部分,而不会明确地将它的依赖注入其中.例如,Jack允许您模拟任何函数,无论是公共函数还是本地对象.从那里你可以窥探,存根或表达对它的期望.关键点在于:一旦你嘲笑了一个函数,任何对原始函数的调用都将转向你的模拟.换句话说,即使调用了原始的,未模拟的函数,你的模拟仍然会被使用.因此,您不必强制注入依赖项,尽管您可以在需要它的情况下执行此操作.

JavaScript是一种与Java(和C#等)不同的语言.它允许不同的实现习惯用法.依赖注入仍然是JavaScript工具箱中的一个有价值的工具,但它不再是城里唯一的游戏.您的模拟框架需要了解并尊重这一事实.杰克和其他几个人一样,但在那些人中,杰克似乎是最成熟和功能最丰富的.



2> Chris MacDon..:

QUnit
jQUnit
用QUnit和jQUnit编写JS测试

QUnit是jQuery JavaScript框架的单元测试框架.测试框架本身使用jQuery库,但是可以为任何JavaScript编写测试,并且不需要代码使用jQuery.JQUnit是QUnit的修改版本,它添加了更典型的xUnit框架的setup,teardown和assert函数,并将所有内容封装在一个全局变量中.

testrunner页面的可视化界面很不错,允许您深入查看每个测试方法中的每个断言.编写测试非常简单,您可以直接在testRunner页面上运行测试代码[8].这允许简单和可见的DOM测试.

QUnit:MIT或GPL(选择)jQUnit:MIT许可证

优点
- 异步支持
- 适用于DOM测试
- 测试总是按照添加到套件的顺序依次运行
- 使用firebug在测试页面上调试
- 如果使用JQUnit语法类似于JUnit,但是如果使用QUnit
Cons则很容易学习
- 自动化很难实施


其中一个缺点可以带走:QUnit不再需要jQuery.

3> Jani Hartika..:

我不确定为什么没人提到JsTestDriver!它必须是唯一的JS测试工具之一,如果您使用其他语言的单元测试工具,它实际上会像您期望的那样工作.

运行测试可以在不触摸浏览器的情况下完成,您可以将它与IDE集成,您可以将它与Continuous集成系统集成...哦,它很快,并且可以同时在多个浏览器中运行测试.

您还可以使用其他测试框架(如YUITest),使其更好.



4> Chris MacDon..:

YUI测试
TDD与YUI测试

YUI Test是Yahoo用户界面库的测试框架.它被Yahoo用来测试自己的库,并且具有类似于jUnit的语法.

与jsUnit一样,YUI Test带有自己的日志记录控制台,除了每个测试的结果外,它还可以输出信息,警告和错误.

YUI还提供以JSON或XML格式发送结果报告的功能.

YUI测试是BSD许可的.

优点
- 非常好的文档
- 活动社区
- 常规版本
- 语法类似于jUnit(测试套件,断言和设置/拆除)
- 异步支持
- 适用于DOM测试
- 测试总是按照它们添加到套件的顺序依次运行

缺点
- 自动化实现起来并不容易,但比其他框架要困难

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有