正如标题所说,我希望能够在节点上使用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测试旁边的小箭头。
答案 0 :(得分:2)
Jasmine和Mocha之间存在肤浅的相似之处(describe
,it
等)但如果你想在两者之下运行套件,那么必须弥合很多差异。您不能使用Jasmine套件,通常希望它可以在没有修改的情况下在Mocha中使用。 Jasmine不是为了运行Mocha测试而设计的,而Mocha不是为运行Jasmine测试而设计的。
例如,Mocha无法对jasmine.createSpy()
执行任何操作。它甚至没有内置于Mocha本身的等效物。如果你将端口你的套件移植到Mocha(即放弃Jasmine而不是Mocha),你必须使用像Sinon这样的库来提供类似的功能。如果你想让你的套件同时在Mocha和Jasmine中运行,那么你可以通过一个包装器库来弥补差距,该库可以检测它正在运行的运行器并根据需要调用jasmine.createSpy()
或Sinon等效项,但是任何非平凡的测试套件所需的工作量都很大。 (坦率地说,我没有任何项目可以证明费用是合理的。)
您还必须使用Chai之类的库来提供expect
。