如标题所述,我希望能够在节点上使用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测试旁边放置的小箭头。

最佳答案

茉莉花和摩卡(describeit等)之间有表面上的相似之处,但是如果要在两者下运行套件,则必须弥合很多差异。您不能使用Jasmine套件,并且通常希望它能在Mocha中正常运行而无需修改。 Jasmine并非旨在运行Mocha测试,Mocha并非旨在运行Jasmine测试。

例如,摩卡(Mocha)无法对jasmine.createSpy()做任何事情。它甚至没有与Mocha本身内置的等效项。如果您要将套件移植到Mocha(即放弃Jasmine而转而使用Mocha),则必须使用Sinon之类的库来提供类似的功能。如果您想让套件同时在Mocha和Jasmine中运行,那么您也许可以通过一个包装库来弥合差距,该包装库可以检测到该套件在哪个运行程序下运行,并根据需要调用jasmine.createSpy()或Sinon等效项,但任何非-简单的测试套件,所需的工作将是巨大的。 (坦率地说,我没有任何项目可以证明这笔费用合理。)

您还必须使用Chai之类的库来提供expect

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

10-16 17:16