javascript - 我可以通过 Mocha 运行 Jasmine 测试吗

标签 javascript jasmine mocha.js

正如标题所示,我希望能够在节点上使用 Mocha 运行 Jasmine 测试。作为实验,我安装了 Jasmine 和 Mocha 并运行

jasmine examples

安装示例。

运行 Jasmine 按预期运行测试:

$ ./node_modules/jasmine/bin/jasmine.js
Started
.....


5 specs, 0 failures
Finished in 0.012 seconds

但是在 Mocha 中运行测试不起作用:

$ ./node_modules/mocha/bin/mocha spec/jasmine_examples/PlayerSpec.js

0 passing (11ms)
5 failing

1) Player
   should be able to play a Song:
   ReferenceError: expect is not defined
   at Context.<anonymous> (spec\jasmine_examples\PlayerSpec.js:14:5)

等等

类似地,如果我尝试将对 jasmine.createSpy() 的调用添加到测试中,它在 Jasmine 下工作正常,但在 Mocha 下它会报告

ReferenceError: jasmine is not defined

也许我不应该完全感到惊讶,但由于我是这个 Javascript 世界的新手,有人可以向我解释一下如何让它工作或为什么它不起作用吗?

如果有人想知道我为什么要这样做,作为一个团队,我们使用 Jasmine,但我使用 IntelliJ 作为我的 IDE。这不理解 Jasmine 测试,因此我必须手动创建运行配置来运行特定测试。如果我能让它们在 Mocha 下运行,我就可以使用内置的 Mocha 支持,只需单击 IntelliJ 在 Mocha 测试旁边放置的小箭头即可。

最佳答案

Jasmine 和 Mocha 之间有表面上的相似之处(describeit 等),但如果您想拥有它们,则必须弥合许多差异两者都运行的套件。您不能在使用 Jasmine 套件后通常期望它无需修改即可在 Mocha 中运行。 Jasmine 不是为运行 Mocha 测试而设计的,Mocha 也不是为运行 Jasmine 测试而设计的。

例如,Mocha 无法使用 jasmine.createSpy() 执行任何操作。它甚至没有内置于 Mocha 本身的等效项。如果您要将套件移植到 Mocha(即放弃 Jasmine,转而使用 Mocha),则必须使用像 Sinon 这样的库。提供类似的功能。如果您想让您的套件在 Mocha 和 Jasmine 中运行,那么您可以使用包装器库来弥补差距,该包装器库检测它在哪个运行器下运行并调用 jasmine.createSpy() 或根据需要,有一个Sinon 等效项,但对于任何重要的测试套件,所需的工作都将是巨大的。 (坦率地说,我所从事的项目中没有一个项目可以证明我的费用是合理的。)

您还必须使用像 Chai 这样的库提供期望

关于javascript - 我可以通过 Mocha 运行 Jasmine 测试吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48590714/

相关文章:

javascript - while 循环不会随机生成数据

javascript - 当我运行 Mocha 测试时,我总是收到错误 : connect ECONNREFUSED

javascript - 如何在没有JS SDK的情况下通过Web Client接口(interface)访问设备?

javascript - React 和 Redux 中删除页面/路由后重定向

angular - 在 Jasmine 3 中,我应该使用什么来代替 fit 和 fdescribe?

Cordova /PhoneGap TDD : How to use Jasmine and Karma to test mobile app?

javascript - 低图形 HTML5 游戏导致浏览器卡住

javascript - Math.round 返回 NaN

javascript - 如何测试从外部导入到组件中的函数?

javascript - Mocha 测试无法在 nodejs 服务器上运行