Node.js 我应该从“誓言”改为“摩卡”吗?

Node.js 我应该从“誓言”改为“摩卡”吗?,node.js,mocha.js,vows,Node.js,Mocha.js,Vows,我正在尝试决定是否从Vows切换到Mocha,以获得一个大型节点应用程序 我享受了几乎所有的誓言经历——但争论的通过有点奇怪。我总是要挠头来记住主题是如何工作的,这干扰了编写测试的基础。在深度嵌套的异步测试中,这个问题尤其严重。尽管我发现将Vows与async.js结合起来会有所帮助 所以摩卡咖啡的报道似乎更灵活。我喜欢自由选择测试样式&重要的是它也在浏览器中运行,这将非常有用。但我担心它仍然不能解决深度嵌套异步测试的可读性问题 有人有什么实用的建议吗?Mocha能让深度嵌套的测试可读吗?我遗漏

我正在尝试决定是否从Vows切换到Mocha,以获得一个大型节点应用程序

我享受了几乎所有的誓言经历——但争论的通过有点奇怪。我总是要挠头来记住主题是如何工作的,这干扰了编写测试的基础。在深度嵌套的异步测试中,这个问题尤其严重。尽管我发现将Vows与async.js结合起来会有所帮助

所以摩卡咖啡的报道似乎更灵活。我喜欢自由选择测试样式&重要的是它也在浏览器中运行,这将非常有用。但我担心它仍然不能解决深度嵌套异步测试的可读性问题


有人有什么实用的建议吗?Mocha能让深度嵌套的测试可读吗?我遗漏了什么吗?

在单元测试套件中使用流控制可以解决深度嵌套的测试

Vows不容易做到这一点,因为导出样式需要创建支持这一点的流控制库


为vows编写流量控制库,或者切换到mocha并重新使用现有的流量控制库。

mocha是ace。它提供了一个已完成的回调,而不是jasmine提供的等待。我不能从誓言中谈论移民,但从茉莉花那里,这是直截了当的。在您的mocha测试函数中,如果您想使用async(或者Seq等,如果您想成为遗留),您可以使用async,但是如果您需要嵌套回调,那么这是一个集成测试,这可能会让您考虑测试的粒度


OT:100%的测试覆盖率很少提供任何价值

好的,谢谢。也许你在粒度上是对的——事情可以再细分一点。但是我经常发现测试需要3或4个嵌套&我希望它更可读。也许有一种方法可以以某种方式结束descripe函数。。