我正在尝试创建一个共享的UI组件。我想利用Typescript给出的开发反馈,但是创建转换后的文件,使得不需要模块加载器来使用它。
我已经完成了所有这些工作,但是也希望围绕它设置一些单元测试。这给我带来了很多问题。我的app结构如下所示:
karma.conf.js
gulpfile.js
dist/
component.js
src/
component.ts
test/
unit/
component.spec.ts
在gulpfile.js
我有两项任务。一个构建打字稿文件并将构建的.js
文件放在dist/
中的文件。
如果我运行gulp build
命令,然后使用以下gulp test
文件运行karma.conf.js
命令,则所有测试都通过:
module.exports = function(config) {
config.set({
basePath: './',
frameworks: ['jasmine'],
files: [
'dist/js/pager.js',
'test/unit/*.spec.ts'
],
exclude: [],
preprocessors: { },
reporters: ['progress'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome'],
singleRun: false
});
};
注意:我明确地提取了构建.js
文件。
我想做的是在.ts
文件上运行测试,以便我可以使gulp build
任务依赖于gulp test
任务。
我尝试使用如下所示的karma.conf.js
文件:
module.exports = function(config) {
config.set({
basePath: './',
frameworks: ['jasmine', 'karma-typescript'],
files: [
'src/**/*.ts',
'test/unit/*.spec.ts'
],
exclude: [],
preprocessors: {
"src/**/*.ts": ["karma-typescript"]
},
reporters: ['progress', 'karma-typescript'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: false,
browsers: ['Chrome'],
singleRun: false
});
};
但我仍然会收到此错误:"ReferenceError: Component is not defined"
由于上面的.js
版本似乎正在运行,我的假设是即使在.ts
版本中也加载了文件,但是它们没有被编译。这让我很困惑,因为.spec
文件也是打字稿文件,而且这些文件正在构建得很好。
/// <reference path="../../src/component.ts" />
。systemjs
尝试将其视为模块,
但都无济于事。我确信有一些明显的东西让我失踪,但似乎无法看到它。任何帮助将不胜感激!