2012-02-13 27 views
9

我想决定是否从一个大的Node应用程序从誓约切换到摩卡。我应该从誓言转向摩卡吗?

我已经享受了几乎所有的誓言体验 - 但对于传递的参数有些奇怪。我总是不得不挠头去记住主题是如何工作的,这会干扰写测试的基础知识。在深度嵌套的异步测试中,这尤其成问题。尽管我发现将Vows与async.js结合起来可以提供一些帮助。

因此,摩卡在其报告中似乎更加灵活。我喜欢自由选择测试风格&,它在浏览器中运行也很重要,这非常有用。但我担心它仍不能解决深度嵌套异步测试的可读性问题。

有没有人有任何实际的建议 - 摩卡可以做深层嵌套测试可读吗?我错过了什么吗?

+0

毫无疑问,是的。 – Raynos 2012-02-13 10:48:55

回答

8

摩卡是王牌。它提供了一个完成的回调,而不是等待茉莉花提供的。我不能谈论从誓言中迁徙,但从茉莉花来看,它很简单。在你的摩卡测试函数中,你可以使用异步(如果你想要的话)(或者Seq等,如果你想成为遗留的),但是如果你在这个时候需要嵌套的回调,那么你可以使用集成测试,这可能会让你考虑测试的粒度。

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

+0

好点谢谢。也许你在粒度上是正确的 - 事情可能会分裂多一点。但是我经常发现一些情况,说3或4巢是需要测试的,我希望它更具可读性。也许有一种方法可以以某种方式包装描述函数。 – 2012-02-14 19:29:36

3

通过在单元测试套件中使用流控制来解决深度嵌套测试。

Vows不允许这么做,因为导出方式需要创建支持该方法的流控制库。

要么写一个誓言流量控制库或切换到摩卡并重新使用现有的流量控制库。