我在https://github.com/ry/node/wiki/modules#testing查看了相当长的测试框架列表。这些框架的经验是什么?
显然,在浏览器中运行的功能将是一项很大的好处,但是我主要对Node.js感兴趣。高度异步的东西会很棒。
我在https://github.com/ry/node/wiki/modules#testing查看了相当长的测试框架列表。这些框架的经验是什么?
显然,在浏览器中运行的功能将是一项很大的好处,但是我主要对Node.js感兴趣。高度异步的东西会很棒。
Answers:
更新:
我认为摩卡咖啡是最好的。
这些框架有什么经验?
我玩过expresso,这是一个非常酷的测试框架,也具有测试覆盖率。它是由TJ Holowaychuk创建的,他也是Express.js(基于Node.js和Connect的快速(小型)服务器端JavaScript Web开发框架)的创建者。最近,我看到他还有一个很酷的库,应该名为Express.js,可以与Expresso一起使用,以获得更好的测试体验。
显然,在浏览器中运行的能力将是一个很大的好处
我不认为它可以在浏览器中运行,但是我也不明白为什么要在浏览器中运行它?
但我主要对Node.js感兴趣。高度异步的东西会很棒。
来自快递的报价:
传递给每个回调的参数为beforeExit,通常用于断言已调用了回调。
您可以使用beforeExit测试异步功能。
提示:在GitHub上关注TJ Holowaychuk,因为他创建了非常好的开源代码。
我使用的VowsJS易于使用异步BDD框架(行为驱动开发)并完成工作。
从我最近的观察来看,这是许多人选择测试其NPM模块的方法,因此,我相信到目前为止,这是最适合使用的模块之一。
可以与NodeJS一起使用的一些流行测试框架还有:
您还可以在此处查看JavaScript测试框架列表
很少有其他可以帮助您编写更好代码的库:
Atlassian也有Bamboo CI Server,它可以自动进行构建和测试。它是一个针对Apache / Tomcat的软件包(它之所以如此,是因为它使用Java并且非常笨重),它也不是免费的,但是它的入门许可证价格为10美元,因此我相信它是可以负担的。它是到目前为止我发现的所有CI服务器中功能最强大的,它支持所有支持xUnit的单元测试,这意味着您可以使用Bamboo来为任何语言运行构建/测试。
带有NodeJS的CI的另一个选择是Travis,许多人将其用于开源项目,因为它表示A为开源社区提供了托管的持续集成服务。
还有一个Google小组讨论,涉及Node JS项目的持续集成。
根据上述提问者的评论,我尝试了誓言,它解决了异步测试中遇到的许多问题。它具有混合串行和并行测试的能力。
确保您仔细阅读了指导文档,但是一旦掌握了指导文档,它就会变得灵活,功能强大并且可以产生清晰的结果。
更新:我也鼓励人们看看应该为他们的断言。它允许非常灵活,可读性强的断言,并且与Expresso和Vows以及可能的大多数其他测试框架兼容。
(我将其作为单独的答案发布,以防万一人们没有注意到对Alfred答案的评论。)
2015年1月7日更新:我需要从Vows切换到Mocha,然后从Should切换到Chai,这是值得的。Mocha现在对使用Promise的异步测试提供了更好的支持,而Chai允许一些expect
不喜欢修改对象原型的人使用一些灵活的assert选项,包括api。
should
将一个不可枚举的属性添加should
到Object
原型,这意味着您要处理的所有值/对象在测试时和生产时看起来都略有不同。尽管在大多数情况下这可能“奏效”,但原则上修改内置原型并不是一个好主意。仅在测试期间执行此操作感觉不对。所有这些都是单独完成的,因此它们可以具有不错的语法。
should
不延长Object.prototype
(简单地调用require('should').noConflict()
和使用should.js作为替代期待。
如果您想要一个真正的BDD框架,那么可以考虑使用Yadda。它与摩卡,茉莉,nodeunit,qunit,zombie和casperjs集成在一起,以支持功能文件,例如
Scenario: provides the version of all services
given service x is running
and service y is running
when I request the service versions
then service x should be version 0.0.1
and service y should be version 0.0.2