针对 Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [关闭]

Posted

技术标签:

【中文标题】针对 Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [关闭]【英文标题】:Jasmine vs. Mocha JavaScript testing for Rails 3.1+ [closed] 【发布时间】:2012-03-31 09:42:03 【问题描述】:

我有 Jasmine 的经验,并且非常喜欢它。有没有人有 Jasmine 和 Mocha 的经验,特别是 Rails?我想知道是否值得切换。

【问题讨论】:

【参考方案1】:

我已经在 J​​asmine 和 Mocha 中进行了测试。首先,切换相对容易。基本的describeit BDD 模式是相同的。您将需要更改执行断言的方式并切换到异步测​​试的不同接口。总体而言,它们具有可比性。

Mocha 的异步接口更简单、更一致。测试和设置可以是同步的也可以是异步的,这很棒。这一点,再加上 TJ Holowaychuck 是一位史诗般的密码诗人,这些都是尝试摩卡咖啡的好理由。

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

归根结底,这是一个个人偏好问题,我强烈建议您花一天左右的时间编写 Mocha 测试而不是 Jasmine,看看感觉如何。完全值得投资,即使您决定坚持使用 Jasmine,您也会从第一手知识的地方这样做,并了解解决 Jasmine 解决的一些问题的其他方法。我试过了,我坚持使用 Mocha,部分原因是押注 TJ 是一个不错的选择,但 Jasmine 也是一个成熟、可靠且被广泛采用的库。

【讨论】:

谢谢彼得!正是我正在寻找的那种观察:) 嘿彼得,写得很棒!补充一点,使用 Chai,您也可以获得 Jasmine 风格的(“bdd”)接口:chaijs.com/code/expect.html 事实上,您可以将它与 assert(“tdd”)接口混合搭配。类似于 jasmine-jquery,还有一个 chai-jquery 插件,虽然它很新。 是的,chai 和 mocha 都有多个接口。正如我上面提到的,我不喜欢 chai bdd/expect 界面,因为我觉得所有这些点都没有帮助。 听觉+1。和一篇很棒的文章。并且让 protip 尝试它们,看看它们是如何工作的。 由于 Jasmine 2.0,您的答案是否有任何变化?【参考方案2】:

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

https://github.com/modeset/teaspoon

Mocha 是一个非常棒的库,但我通常使用 Jasmine - 对我来说,它主要是关于 Jasmine 的知识和经验,但 Mocha 有一些非常酷的功能 - 比如让你知道什么时候你正在将内容注入全局范围.

认为值得一提的是该项目,因为它特别允许您在不同的套件中同时使用这两种方法,因此您可以自己决定。

【讨论】:

以上是关于针对 Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Jasmine Rails,未从子目录加载 src_files

Ruby on Rails 5.1 和 Vue.js 2.4.x – 使用 Karma、Jasmine 进行测试 – 如何安装?

使用 sencha touch 与 rails 3.1

将@font-face 与 Rails 3.1 应用程序一起使用?

如何将dojo工具包与rails 3.1资产管道和coffeescript一起使用?

使用 Jasmine 单独测试 Marionette 模块