有没有办法捕捉protractor
的跑步者直接抛出的特定错误?例如,一个未被捕获的例外是:
WARNING - pattern /var/www/smoran/repo/app/partials/app/app.controller.e2e.js did not match any files.
[launcher] Process exited with error code 1
/var/www/smoran/repo/node_modules/protractor/node_modules/q/q.js:126
throw e;
^
Error: Spec patterns did not match any files.
at Runner.run (/var/www/smoran/repo/node_modules/protractor/lib/runner.js:249:11)
at TaskRunner.run (/var/www/smoran/repo/node_modules/protractor/lib/taskRunner.js:123:19)
at createNextTaskRunner (/var/www/smoran/repo/node_modules/protractor/lib/launcher.js:220:20)
at /var/www/smoran/repo/node_modules/protractor/lib/launcher.js:243:7
at _fulfilled (/var/www/smoran/repo/node_modules/protractor/node_modules/q/q.js:797:54)
at self.promiseDispatch.done (/var/www/smoran/repo/node_modules/protractor/node_modules/q/q.js:826:30)
at Promise.promise.promiseDispatch (/var/www/smoran/repo/node_modules/protractor/node_modules/q/q.js:759:13)
at /var/www/smoran/repo/node_modules/protractor/node_modules/q/q.js:573:44
at flush (/var/www/smoran/repo/node_modules/protractor/node_modules/q/q.js:108:17)
at process._tickCallback (node.js:419:13)
当protractor
使用指定的globbing模式找不到任何文件时,或者当找到的文件中没有任何文件可以被jasmine或mocha解析时,抛出此错误。
现在,我不关心导致此错误的情况。我不关心量角器是否可以找到带有我的globbing模式的文件,如果我关心,我想抛出我自己的错误,因为它的错误太冗长了,实际上{{1} }。不幸的是,uncaught exceptions
在我尝试这样做的每一个转折点都在绊倒我。它似乎是在运行器中抛出错误,然后将其捕获到它的依赖项protractor
中,然后在q
(在它之下)运行它时重新抛出它。
我正在使用NodeJS
,而我正在使用gulp
的{{1}}来生成量角器,因为所有child_process
的{{1}}插件似乎都是被列入黑名单或建议不要使用。我的代码在这里显示的时间太长了,但它基本上就是这样:
spawn
我的gulp
中有量角器,而protractor
是一个字符串,而不是一个数组。我正在使用gulp.task('protractor', function() {
return spawn('protractor',
[
'--specs=' + notFoundTests
otherArgs
],
{
stdio: 'inherit'
});
});
因为我仍然希望看到所有错误&输出,但我试图找到一种方法来过滤它。
无论我试图抓住什么,错误似乎都不会以这种方式发出。它似乎不是作为错误发出的,因此PATH
不起作用。在notFoundTests
的调用周围使用stdio: 'inherit'
块也不起作用。即使使用spawn(...).on('error', function() {});
也没有捕获它,即使它似乎是未被捕获的例外。
我的问题是:我如何捕获try catch
引发但未真正返回的错误? spawn
是否提供任何挂钩等?另外,为什么抛出这个特殊错误?这似乎是最终开发人员的错误,而不是process.on('uncaughtException');
应该处理的事情。