我应该从Vows转换到Mocha吗?(这是一个提问标题,不需要回答)

10

我正在考虑是否要在一个大型的Node应用程序中从Vows转换到Mocha。

我几乎喜欢Vows的所有体验——但是参数传递方式有些奇怪。我总是不得不想一想如何使用topics,这会干扰基本的测试编写过程。这在嵌套层级比较深的异步测试中尤为棘手。虽然我发现将Vows与async.js结合使用可以稍微帮助一下。

Mocha在报告方面似乎更加灵活。我喜欢自由选择测试样式,而且它也可以在浏览器中运行,这将非常有用。但我担心它仍无法解决异步测试嵌套太深时可读性差的问题。

有没有实际建议可以提供——Mocha能否使深度嵌套测试变得可读?我有没有遗漏什么?

2个回答

9

Mocha非常好用。它提供了一个done回调函数,而不是像Jasmine提供的waitsFor函数。我不知道从vows迁移过来会怎样,但是从Jasmine转换很简单。在你的Mocha测试函数内部,如果需要,您可以使用async(或Seq等),但是如果此时需要嵌套回调,则这将成为集成测试,这可能会让您思考测试的粒度。

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


好的,谢谢你的建议。也许你对于粒度的设置是正确的 - 可以将一些内容进行分割。但是我经常会遇到需要3或4个嵌套来测试的情况,这时我希望代码更易读。也许有一种方式可以在某种程度上包装describe函数.. - Joe Parry

3

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

Vows不容易允许这样做,因为exports方式需要创建支持此操作的流程控制库。

可以为vows编写流程控制库,或者切换到mocha并重用现有的流程控制库。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接