【发布时间】:2017-03-12 15:00:42
【问题描述】:
我正在尝试将 karma/jasmine 添加到我一直从事的旧项目中,以便我可以开始将单元测试添加到我的 TypeScript 代码中。
我遇到的问题是 karma 在编译文件时丢失了一些模块/命名空间引用。
TS 来源:
/// <reference path="../../app.ts" />
module App.Module {
'use strict';
class MyClass extends BaseClass {
constructor() {
super();
}
}
构建(我使用 gulp 任务):
var App;
(function (App) {
var Module;
(function (Module) {
'use strict';
var MyClass = (function (_super) {
__extends(BaseClass, _super);
function MyClass() {
var _this = _super.call(this) || this;
return _this;
}
return MyClass;
}(App.BaseClass));
})(Module = App.Module || (App.Module = {}));
})(App || (App = {}));
使用 Karma(typescriptPreprocessor)构建:
var App;
(function (App) {
var Module;
(function (Module) {
'use strict';
var MyClass = (function (_super) {
__extends(BaseClass, _super);
function MyClass() {
var _this = _super.call(this) || this;
return _this;
}
return MyClass;
}(BaseClass));
})(Module = App.Module || (App.Module = {}));
})(App || (App = {}));
不同之处在于我的正常输出将 BaseClass 限定为 App.BaseClass,并且能够找到它。
作为测试,我修改了TS代码扩展了App.BaseClass,Karma生成的代码正确,并且能够正常运行,但是我不想有完成我的整个申请,完全符合每个参考的要求。
我可以在业力设置中做些什么来修复这个问题?
karma.config.js
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
files: [
'App/**/*.ts'
],
preprocessors: {
'**/*.ts': ['typescript']
},
typescriptPreprocessor: {
transformPath: function (path) {
return path.replace(/\.ts$/, '.js');
}
},
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false,
concurrency: Infinity,
mime: {
'text/x-typescript': ['ts', 'tsx']
}
});
}
【问题讨论】: