使用 node.js、Mocha 和 mocha-jsdom 测试生成的 Typescript 类?

Testing Typescript Generated Classes with node.js, Mocha and mocha-jsdom?

我想 运行 来自 bash 的单元测试来测试我使用 mocha 和 mocha-jsdom 生成的 Typescript Javascript 类。我正在使用 mocha-jsdom 因为我想在我的测试中模拟 dom 但 运行 来自 bash.

的单元测试

我看到了几个例子,他们在浏览器中使用了 mocha 的前端测试框架,但我还没有看到他们 运行 来自 bash。

看来我无法在我的 mocha 单元测试中包含从 Typescript 生成的 Javascript 类。

var jsdom = require('../../index'); 
require('../../src/js/acct/AccountManager.js');

describe('GenerateHTML', function() {
  describe('#generateHTML()', function() {

    jsdom()

    it('should generate a table', function() {
        var vahm = new VerticalAccountHTMLManager(document, "testId");

        expect($("#testId")[0]).eql("table");   
    }); 
  });
});

有没有什么方法可以将创建 类 的函数导入到 mocha 单元测试中,同时仍然从 bash 中 运行ning 它?

那么让我们从执行测试开始吧。 要执行测试,您有多种选择:

  • 使用karma。 Karma 是一个 JavaScript 测试 运行ner。实际上,您在 karma.config.js 文件中指定了所有要执行的测试,它会执行所有测试。您还有一个 watch 功能,允许您在每次更改代码时执行测试
  • 使用node.js。在 package.json 文件的脚本 属性 中,指定命令 test 并将命令关联到该脚本,以便针对所有测试执行 mocha。然后你可以 运行 测试只需输入 npm test
  • 如果你想使用 bash,我的建议是使用它来触发 npm test 命令或 karma 命令。这是通过 bash 开始测试的最简单方法。您还可以在 Win 上设置一个 .bat 文件,它 运行 始终通过 npm/karma 命令
  • 进行测试
  • 将任务 运行 用作 GulpGrunt 等...您可以指定触发测试的任务,然后 运行 提供的任务例如命令 gulp mytask

我的建议是目前直接使用node.js。它让事情变得更简单。

关于TypeScript,你可以直接在TypeScrit中使用mocha,不需要JavaScript。我建议您将 mocha 与 chai、chai-as-promised 和 sinon 集成。 Chai 是一个断言库。 Chai-as-promised 允许您测试 promises 和 sinon 以测试功能和方法。

这是 package.json 的示例,其中包含我在上面所说的测试命令:

"scripts": {
    "test": "find ./src -name '*spec.ts' | xargs mocha -r ts-node/register"
}

用这一行,你将执行所有以*spec.ts结尾的文件。 ts-node 是一个非常有用的节点插件,它允许你直接通过命令 ts-node myfile.ts

运行 ts

关于要包含在 package.json 中的依赖项,这里有一个有用的列表:

"devDependencies": {
        "@types/chai": "^3.5.0",
        "@types/chai-as-promised": "^0.0.30",
        "@types/mocha": "^2.2.40",
        "@types/node": "^7.0.12",
        "@types/sinon": "^2.1.2",
        "chai": "^3.5.0",
        "chai-as-promised": "^6.0.0",
        "husky": "^0.13.3",
        "mocha": "^3.2.0",
        "sinon": "^2.1.0",
        "ts-node": "^3.0.2",
        "typings": "^2.1.1"
}

关于如何将 mocha 集成到您的测试中,这里是一个规范文件的声明,您可以将其用作模式:

// imports of testing libraries 
import * as mocha from 'mocha';
import * as chai from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
import sinon = require('sinon');
// import of the source files to be tested
import Main from './Main'; // an example

// testing inits
chai.use(chaiAsPromised);
const expect = chai.expect;
const assert = chai.assert;
const should = chai.should();

你可以试试看这个repo。有一个使用 TypeScript 和我上面提到的所有测试库的非常简单的项目。它仍在进行中,我还没有时间完成它,所以主要 README.md 也没有更新。 但是,如果您克隆该项目或下载源代码,您可以全面了解我上面所说的所有内容以及您可以在测试中使用的所有方法的说明:

https://github.com/quirimmo/testing-typescript-mocha-chai-sinon

希望对您有所帮助!如有任何疑问,请告诉我!