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

时间:2018-02-02 20:52:32

标签: javascript jasmine mocha

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

1 个答案:

答案 0 :(得分:2)

Jasmine和Mocha之间存在肤浅的相似之处(describeit等)但如果你想在两者之下运行套件,那么必须弥合很多差异。您不能使用Jasmine套件,通常希望它可以在没有修改的情况下在Mocha中使用。 Jasmine不是为了运行Mocha测试而设计的,而Mocha不是为运行Jasmine测试而设计的。

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

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

相关问题