Jasmine vs Mocha 用于 Rails 3.1 + 的 JavaScript 测试

我对茉莉有经验,而且确实很喜欢它。有人对 Jasmine 和 Mocha 都有经验吗,特别是在 Rails 上?我想知道是否值得换。

13397 次浏览

我对茉莉和摩卡都做过测试。首先,转换相对容易。基本的 describeit BDD 模式是相同的。您需要更改断言的执行方式,并为异步测试切换到不同的接口。总体而言,它们具有可比性。

Mocha 的异步接口更加简单和一致。测试和设置可以是同步的,也可以是异步的,这很好。这一点,再加上 TJ 霍洛韦查克是一个史诗代码诗人是很好的理由,尝试摩卡。

我确实认为 Jasmine 匹配器更容易阅读和更优雅,特别是当与 Jasmine-jquery 插件配对时。Mocha 通常与一个单独的断言库配对,如果您正在进行浏览器内测试,通常是 chai.js,如果您正在进行只针对节点的测试,则通常是 should. js。我对 chai 的 assert.equal()界面很满意,但是茉莉花风格的 expect($("#central_errors").html()).toContain("must provide a name");对我来说似乎更优雅。我不喜欢 chai.js expect(42).to.be.above(41)风格的带点分隔句子的界面,因为它在听觉上并不好用。

最后,这是一个个人偏好的问题,我强烈建议你花一天左右的时间来写摩卡测试,而不是茉莉花,看看感觉如何。完全是一个值得的投资,即使你决定坚持茉莉花,你将从第一手知识的地方这样做,并有一个意识的其他方式来解决一些问题茉莉花解决。我尝试过,我坚持摩卡咖啡,部分原因是押注于 TJ 是一个很好的选择,但 Jasmine 也是一个成熟的、可靠的、被广泛采用的图书馆。

查看 github 上的 Teabag 项目。它特别允许您与 Mocha、 Jasmine 或 QUnit 一起使用资产管道。

Https://github.com/modeset/teaspoon

Mocha 是一个非常棒的库,但是我通常使用 Jasmine ——对我来说,它主要是关于知识和使用 Jasmine 的经验,但是 Mocha 有一些非常酷的特性——比如让你知道什么时候你正在把东西放入全球范围。

我觉得这个项目值得一提,因为它特别允许你同时使用这两个软件(在不同的套件中) ,这样你就可以自己做决定了。