我正在尝试使用我的代码实现单元测试 Karma + karma-typescript + mocha。
以下代码基于此example。 唯一的区别是我使用mocha而不是jasmine和amd而不是commonjs。
目录结构
.
|-- src
| |-- core
| | |-- Class1.ts
..
|-- test
| |-- Test.spec.ts
..
| -- karma.conf.js
| -- tsconfig.json
Karma.conf.js
module.exports = function (config) {
config.set({
frameworks: ["mocha", "karma-typescript"],
files: [
{pattern: 'src/**/*.ts'},
{pattern: 'test/**/*.spec.ts'}
],
preprocessors: {
'src/**/*.ts': ['karma-typescript']
},
karmaTypescriptConfig: {
tsconfig: "./tsconfig.json"
},
customLaunchers: {
ChromeNoSandbox: {
base: 'Chrome',
flags: ['--no-sandbox']
}
},
reporters: ['karma-typescript'],
logLevel: config.LOG_DEBUG,
browsers: ["ChromeNoSandbox"],
singleRun: true
})
};
tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "amd",
"lib": [ "es2015", "dom" ],
"sourceMap": true,
"removeComments": true,
"alwaysStrict": true,
"noImplicitAny": true
},
"exclude": [
"build",
"node_modules",
"dist"
]
}
这是一个非常简单的测试
describe("Test", () => {
it("Should do some cool stuff", () => {
console.log('Cool stuff');
})
});
执行业力导致此警告:
"Warning: Possible EventEmitter memory leak detected. 11 close listeners added. Use emitter.setMaxListeners() to increase limit"
我认为使用amd而不是commonjs可能会导致问题,但我不知道为什么。