2011-10-09 26 views
10

我正在考慮在backbone.js和jquery中編寫一些UI測試。他們可能不是最好的方式,但我想到的是 - 通過簡單的代碼來自動化測試而無需記錄和回放。點擊提示的「確定」或通過jquery/javascript確認對話框?

唯一讓我使用這種方法劃傷我的頭的是這樣的:在某些'用例流程'(執行)中,確認/提示對話框將顯示出來。我想點擊「確定」並繼續流程 - 這甚至可以通過普通的JavaScript代碼實現嗎?怎麼樣?

注意:我確實知道GUI測試庫存在,但我想知道如何使用jQuery/javascript代碼(如果可能)來做到這一點。

+1

+1嘗試不同的方法來UI測試 – joshin4colours

回答

14

據我所知,如果你使用標準的alert()調用,你不能觸發一個「OK」點擊,因爲警報呼叫會阻止正常的JS事件循環。

但是你應該能夠用自己的功能,什麼也不做,以取代window.alertwindow.confirm

window.alert = function() { 
    console.log.apply(console, arguments); 
}; 

將這些在你的JS頂部別的加載任何後續調用alert()前或者confirm()將會調用它們。

+0

hmmmm ...但我必須全部通過,以使更改了代碼。這些警報不是調試,而是應用程序的實際部分,它是早期的增量。稍後他們將被更改爲自定義警報......這是不可能的我猜 – PhD

+0

不,重要的是,如果您處於調試模式,則只需進行一次此更改,並且上面的代碼將替代所有後續的alert ()'。 – Alnitak

+0

Ahhhh我明白了!甜...可以做同樣的事情來確認嗎?我猜是的... :) – PhD

3

你想要的東西,如:

<script type="text/javascript"> 
var oldConfirm = confirm; 
var oldAlert = alert; 

confirm = function() { 
    return true; 
}; 
alert = function() { 
    return true; 
} 

var response = confirm("Is this OK?"); 

if (response) { 
    alert("Yay"); 
} 
else { 
    alert("Boo"); 
} 

confirm = oldConfirm; 
alert = oldAlert; 
</script> 
+0

我不確定它會如何幫助...可以用一些解釋來增強「意圖」嗎? :) – PhD

+0

我想你的意思是'oldConfirm = window.confirm'根據Alnitak的回答... – PhD

+0

是的,對不起。 window.confirm和confirm參考相同的事情。 –