我想从 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 运行它?
所以让我们从执行测试开始。要执行测试,您有多种选择:
karma
. Karma 是一个 JavaScript 测试运行器。实际上,您在karma.config.js
文件中指定要执行的所有测试,它将执行所有测试。您还有一个watch
功能,允许您在每次更改代码时执行测试package.json
文件的脚本属性中,指定命令test
并将命令关联到该脚本,以便针对所有测试执行 mocha。然后您只需键入即可运行测试npm test
Gulp
,Grunt
等等......你可以指定你触发你的测试任务,然后运行该任务提供例如命令gulp mytask
我的建议是现在直接使用 node.js。它使事情变得更容易。
关于 TypeScript,你可以直接使用 mocha 和 TypeScrit,不需要 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 是一个非常有用的节点插件,它允许您直接通过命令运行 tsts-node myfile.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
希望这有帮助!如有任何疑问,请告诉我!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句