2017-08-03 20 views
0

尝试捕捉,我在我的网页对象这样做:如何CodeceptJS

try{ 
    I.selectOption(this.SELECT, this.OPTION); 
} 
catch(error){ 
    I.say('Option missing, but thats sometimes expected ' + error); 
} 

但它仍然未能通过测试时,定位不匹配的选项元素。

我想抓住并继续测试,没有失败。

更新:

它看起来像取决于什么是在try块。

如果我在那里放了一个断言,如I.see('something');那么catch块不会被跳过。但是在try块中的非断言,如I.selectOption('something')会抛出错误,这些错误不会被catch捕获。

+0

这听起来很奇怪“选项丢失,但多数民众赞成有时预计”。但是,既然你抓住了,这不应该失败? –

+0

@lorenz,这只是错误日志的任意字符串。我可以在那里通过'ABCD'。但我不认为这会导致我的catch块被跳过。 –

回答

0

Try-catch应在承诺链上执行。我认为你可以这样得到它:

I.selectOption(this.SELECT, this.OPTION).catch(() => I.say('')); 
+0

当我尝试自己的方式时,我实际上正在从I.say()看到日志,所以这是一个改进。 catch块没有被跳过。 但是,没有发现异常。它仍然没有通过我的测试.... –

+0

与我的原始代码一样,当您从I.see()等断言中抛出错误时,您的答案也会按预期工作,但仍然无法与I.selectOption()一起使用。 –