Karma是一个浏览器测试运行器。
这个想法是,浏览器本身没有加载测试文件、运行它们和报告结果的概念。 Karma所做的事情大致如下:
每个部分的详细信息如下:
(1) 这些文件将是您实际的JS文件;您将告诉Karma如何加载它们。如果您使用requirejs,则有一个Karma插件,需要一些配置。
(2) 这些测试可以使用各种JavaScript测试框架(Jasmine、QUnit、Mocha)编写;这是在浏览器中运行的JS代码。
(3) 自定义Web页面对于每个测试框架都会略有不同;这就是为什么Karma具有不同框架的插件。
(4) Karma可以在许多浏览器(FF、Chrome,或像PhantomJs这样的无头浏览器)中启动页面。
(5) 报告给Karma的内容与框架相关,并用Karma插件处理。
因此,回答您的问题:
理解区别的一种简短方法:
使用普通的Jasmine / Mocha进行测试的人很可能是使用Node虚拟机运行所有代码。
将Karma添加到混合中(在您现有的选择框架之上),将使用其他浏览器的引擎运行您的测试套件。
这样做可以获得浏览器环境提供的小额外功能。测试涉及DOM相关的代码会更容易,但您也将放弃由Node引擎提供的额外资源(如文件系统/ shell访问)。
https://github.com/karma-runner/karma/blob/master/thesis.pdf
Karma是一个测试运行器。它可以被QUnit、Jasmine、Mocha等使用。相比其他测试运行器,Karma有优势,可以改善您的TDD/BDD开发周期。它“监视”文件,因此当您保存更改时,Karma会立即运行测试并报告结果,无需切换到Web浏览器来运行测试。