如何使用Karma在JHipster应用程序中调试JavaScript测试?

时间:2017-11-21 00:51:33

标签: karma-runner jhipster

我有一个使用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控制台进行调试?

1 个答案:

答案 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
            }
        }
    })