在量angular器转轮中捕捉错误
有没有办法来捕捉protractor
的跑步者直接抛出的具体错误? 例如,一个未捕获的exception是:
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
无法使用指定的匹配模式find任何文件或可能没有发现存在的文件可以通过茉莉花或摩卡parsing时,会引发此错误。
现在,我不在乎导致这个错误的情况。 我不关心量angular器是否可以用我的globbing模式find文件,如果我在意,我想抛出自己的错误,因为它的错误太冗长了,实际上是uncaught exceptions
。 不幸的是, protractor
在我试图做到的每一个转弯处都让我tri me protractor
。 它似乎是在跑步者中抛出错误,然后在它的依赖中捕获它,然后如果它正在NodeJS
(它是)下运行,则重新抛出它。
我正在使用child_process
,而且我正在使用child_process
的spawn
来产生量angular器,因为所有的child_process
的protractor
插件似乎被列入黑名单或者build议不要使用。 我的代码在这里显示的时间太长了,但实质上是这样的:
gulp.task('protractor', function() { return spawn('protractor', [ '--specs=' + notFoundTests otherArgs ], { stdio: 'inherit' }); });
我在我的PATH
量angular器, notFoundTests
是一个string,而不是一个数组。 我正在使用stdio: 'inherit'
因为我仍然想看到所有的错误和输出,但我想find一种方法来过滤它。
不pipe我试图抓住什么,错误似乎都不是这样发出来的。 似乎它不是作为一个错误发射,所以spawn(...).on('error', function() {});
不起作用。 围绕调用spawn
的try catch
块也是行不通的。 甚至使用process.on('uncaughtException');
虽然它似乎是一个未被捕获的例外,但它并没有抓住它。
我的问题是:如何捕捉protractor
抛出的错误,但不能真正返回? protractor
是否提供钩子等? 另外,它为什么抛出这个特定的错误? 这似乎是一个最终开发人员的错误,而不是protractor
应该处理的东西。