我有一个使用JHipster v4.10.1生成的简单单片应用程序,前端使用Angular 4.x.要运行JavaScript单元测试,请按the documentation中的建议运行
./node_modules/karma/bin/karma start src/test/javascript/karma.conf.js --debug
该命令运行测试,报告覆盖率摘要和退出,测试是否全部通过或某些测试失败无关紧要。测试运行输出确实显示加载了调试服务器的一点:
21 11 2017 13:41:20.616:INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/
但是因为命令退出,所以无法访问Karma debug server。如何运行测试以便可以在浏览器中使用Karma控制台进行调试?
答案 0 :(得分:0)
想出魔术标志实际上是single-run
,默认情况下似乎是真的。因此,为JS调试运行的主要命令是:
yarn test --single-run=false
反过来运行
$ karma start src/test/javascript/karma.conf.js --single-run=false
使用此命令将仅使用显式kill例如退出然后可以在http://localhost:9876/debug.html
上访问Karma调试控制台(假设默认端口尚未忙碌。如果是,测试输出应该告诉您选择了哪个端口)。
此外,您需要禁用最小化(以及istanbul配置 - 不确定原因),以便您可以轻松地断点并在调试器中逐步执行.ts代码。我想通过在webpack/webpack.test.js
文件中进行以下更改来完成此操作:
从module.rules
数组中删除以下istanbul配置:
{
test: /src[/|\\]main[/|\\]webapp[/|\\].+\.ts$/,
enforce: 'post',
exclude: /(test|node_modules)/,
loader: 'sourcemap-istanbul-instrumenter-loader?force-sourcemap=true'
}
将minimize: false
添加到plugins数组下的LoaderOptionsPlugin
:
new LoaderOptionsPlugin({
minimize: false,
options: {
tslint: {
emitErrors: !WATCH,
failOnHint: false
}
}
})