对于Rails 3.1+的Jasmine vs. Mocha JavaScript测试

Lup*_*Dev 74 javascript ruby-on-rails mocha.js jasmine

我有使用Jasmine的经验,并且非常喜欢它.有没有人有茉莉花和摩卡的经验,特别是对于Rails?我想知道是否值得转换.

Pet*_*ons 119

我在Jasmine和Mocha都做过测试.首先,切换相对容易.基本describeitBDD模式是相同的.您将需要更改断言的方式并切换到异步测​​试的不同接口.总的来说它们是可比的

Mocha的异步接口更简单,更一致.测试和设置可以是同步的也可以是异步的,这很好.这个以及TJ Holowaychuck是一位史诗代码诗人的事实是尝试摩卡的好理由.

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

最终,这是一个个人偏好问题,我强烈建议您花一天左右的时间来编写摩卡测试而不是Jasmine,看看它的感受.完全是一项有价值的投资,即使你决定坚持使用Jasmine,你也会从第一手知识的地方这样做,并了解其他方法来解决Jasmine解决的一些问题.我尝试了它并且我坚持使用Mocha,部分原因是投注TJ是一个不错的选择,但Jasmine也是一个成熟,稳固且广泛采用的库.

  • 嘿彼得,伟大的写作!只是补充说,使用Chai,你也可以得到一个Jasmine风格的("bdd")界面:http://chaijs.com/code/expect.html实际上你可以将它与断言混合搭配(" tdd")界面.类似于jasmine-jquery,还有一个chai-jquery插件,虽然它很新. (7认同)
  • Yup chai和mocha都有多个接口.正如我上面提到的,我不喜欢chai bdd/expect接口,因为我没有发现所有这些点都有用. (6认同)
  • 听觉上+1.还有一篇很棒的文章.并且让protip尝试他们两个,看看他们如何以指骨方式工作. (4认同)