在量角器运行器中捕获错误

时间:2015-04-15 17:24:16

标签: node.js exception protractor

有没有办法捕捉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');应该处理的事情。

0 个答案:

没有答案