Tim*_*hle 9 angularjs karma-jasmine systemjs es6-promise jspm
我一直在我的angularjs 1.5和jspm设置上设置karma和jasmine.首先来自karma的所有错误跟踪日志都来自systemjs,这使得调试变得更加困难.即使我的所有承诺都处理拒绝,我也会收到很多可能未处理的拒绝消息.
ERROR LOG: 'Potentially unhandled rejection [5]
tryCatchReject@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1252:34
runContinuation1@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1211:18
when@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:999:20
run@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1109:28
_drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:166:22
drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:131:15'
ERROR LOG: 'Potentially unhandled rejection [6]
tryCatchReject@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1252:34
runContinuation1@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1211:18
when@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:999:20
run@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:1109:28
_drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:166:22
drain@http://localhost:9020/base/jspm_packages/system-polyfills.src.js?3aa57969dce4ecea4c51aab540f372d15cc886b6:131:15'
MyService
? should do the thing
Expected 3 to equal 2.
tryCatchReject@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:1252:34
runContinuation1@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:1211:18
when@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:999:20
run@/var/www/html/loyaltyone/src/jspm_packages/system-polyfills.src.js:890:17
PhantomJS 2.1.1 (Linux 0.0.0): Executed 46 of 46 (1 FAILED) (0.205 secs / 0.028 secs)
Run Code Online (Sandbox Code Playgroud)
我有办法有更好的跟踪日志与错误?
我也看到了同样的Potentially unhandled rejection...错误。他们太糟糕了而且完全没有帮助。我为调试问题所做的是将 phantomjs 置于调试模式,并debugger;在错误中引用的代码行之前放置一条语句,然后我能够单步执行并找到我遇到的确切问题。
在您的例子中,错误是在 的第 1252 行抛出的jspm_packages/system-polyfills.src.js,其中是一个 method tryCatchReject。我会debugger;像这样放置一个语句,然后在调试时查看值e.message:
/**
* Return f.call(thisArg, x), or if it throws return a rejected promise for
* the thrown exception
*/
function tryCatchReject(f, x, thisArg, next) {
try {
next.become(getHandler(f.call(thisArg, x)));
} catch(e) {
debugger;
next.become(new Rejected(e));
}
}
Run Code Online (Sandbox Code Playgroud)
karma -phantomjs-launcher 自述文件提供了一个很好的示例,说明如何配置 Karma 以将正确的标志传递给 phantomjs 进行调试,以及一些很好的说明:
// karma.conf.js
module.exports = function(config) {
config.set({
browsers: ['PhantomJS', 'PhantomJS_custom'],
// you can define custom flags
customLaunchers: {
'PhantomJS_custom': {
base: 'PhantomJS',
options: {
windowName: 'my-window',
settings: {
webSecurityEnabled: false
},
},
flags: ['--load-images=true'],
debug: true
}
},
phantomjsLauncher: {
// Have phantomjs exit if a ResourceError is encountered (useful if karma exits without killing phantom)
exitOnResourceError: true
}
})
}
Run Code Online (Sandbox Code Playgroud)
如果将调试选项设置为 true,系统将指示您启动 Web 浏览器来调出调试器。请注意,您将需要放置调试器;JavaScript 中的语句来命中断点。您应该能够在测试代码和客户端代码中放置断点。请注意,调试选项会自动将 --remote-debugger-port=9000 和 --remote-debugger-autorun=yes 开关添加到 PhantomJS。
当您开始运行测试时,您应该会看到导航到http://localhost:9000/webkit/inspector/inspector.html?page=2 的提示。您可以在此处启用调试并单步调试代码。
| 归档时间: |
|
| 查看次数: |
317 次 |
| 最近记录: |