正如标题所示,我希望能够在节点上使用 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 之间有表面上的相似之处(describe
、it
等),但如果您想拥有它们,则必须弥合许多差异两者都运行的套件。您不能在使用 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/