2017-08-03 44 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()一起使用。 –