繁体   English   中英

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

[英]Can I run Jasmine tests through 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测试的小箭头。

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

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

您还必须使用像Chai这样的库来提供expect

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM