我正在尝试建立一个混合 Angular 应用程序(AngularJS + Angular),它使用 Webpack 作为其模块加载器,使用 Karma+Jasmine 作为测试框架。要运行测试,我使用的是karma-webpack
; 但是,由 webpack 创建的包永远不会加载到浏览器中,因此永远不会执行测试(呃!)。我已经尝试了很多东西作为健全性检查,但我在互联网上的其他任何地方都没有发现这个问题。
所以,一点调试信息。首先,我的karma.conf.js
文件:
const webpackConfig = require('./webpack.test');
delete webpackConfig.entry;
delete webpackConfig.output;
module.exports = function(config) {
config.set({
basePath: '',
frameworks: ['jasmine'],
port: 8080,
logLevel: config.LOG_DEBUG,
autoWatch: false,
browsers: ['Chrome', 'Firefox'],
singleRun: true,
files: [
// Some remote libraries that should be loaded. These all load fine.
'./client/app/app.spec.ts'
],
preprocessors: {
'./client/app/app.spec.ts': ['webpack', 'sourcemap']
},
webpack: webpackConfig,
webpackMiddleware: {
stats: {
colors: true
}
},
browserNoActivityTimeout: 60000,
client: {
captureConsole: true
},
browserConsoleLogOptions: {
level: 'log',
format: '%b %T:\n%m\n',
terminal: true
},
reporters: ['mocha'],
mochaReporter: {
output: 'autowatch'
}
});
};
运行 Karma 时,webpack 成功执行(karma-webpack
打印webpack: Compiled successfully.
,我可以看到 webpack 的输出);/tmp/_karma_webpack_/
但是,永远不会创建应该保存捆绑包的临时文件(即)。
我已经设置singleRun
选项来false
查看加载了哪些文件,但甚至没有请求捆绑包。但是,如果我将 Karma 的日志级别设置为DEBUG
,我会看到以下(相关)输出:
01 02 2018 12:55:26.678:DEBUG [middleware:source-files]: Requesting /base/client/app/app.spec.ts?bb6177fad9c0cf145a4962a89c7d2efd0bd0235a /
01 02 2018 12:55:26.678:DEBUG [middleware:source-files]: Fetching /home/c1moore/omninox/omnistack/client/app/app.spec.ts
01 02 2018 12:55:26.678:DEBUG [web-server]: serving (cached): /home/c1moore/omninox/omnistack/node_modules/karma-jasmine/lib/adapter.js
01 02 2018 12:55:26.678:DEBUG [web-server]: serving (cached): /home/c1moore/omninox/omnistack/client/app/app.spec.ts
看起来Karma正在尝试提供需要所有测试的文件;但是,我在浏览器的任何地方都看不到。也就是说,该文件似乎没有被请求/加载,我也没有看到浏览器试图将 TS 解释为 JS 导致的任何错误。
我没有包含 app.spec.ts 文件,因为它似乎无关紧要,因为它从未真正加载过。但是,它是相当标准的。它导入 Angular 所需的所有东西、所有供应商库,并需要所有测试(使用require.context
)。
那么,是否有人有任何建议、指示或看到我可能错过的东西?我查看了文档、代码和各种网站,试图找到我错过的一些简单的东西,希望 SO 有一些答案。