2013-10-22 9 views
18

アラートを生成するいくつかのレガシージャバスクリプト、またはコードのいくつかの点で確認を行うジャスミンテストをいくつか書いています。ジャスミンでジャバスクリプトのアラートをテストする

アラートがポップアップする瞬間、ブラウザで実行を一時停止してから、続行する前にokを押す必要があります。

私は何か不足していると確信していますが、アラートを偽造する方法はありますか?

警告メッセージの内容を確認することはさらに可能ですか?

ありがとうございました。

+0

あなたがjolySoftのためにここに受け入れ答えを変更する必要がありhttps://gist.github.com/roine/9621298 –

+3

このリンクを参照してください。 –

答えて

0

驚くほどでスパイを作成して、アラートを含む機能をモックするだけです。ですから、このような何か行うことができます:あなたはまた、サイドノートに何か

oldFunctionWithAlert = jasmine.createSpy("oldFunctionWithAlert() spy").andCallFake(function() { 
    console.log("Doing some testing"); 
    return "Test"; 
}); 

を返すために、これを行うことができます

beforeEach(function() { 
    functionWithAlert = jasmine.createSpy("functionWithAlert");  
    functionWithAlert("called as usual"); 
}); 

を、私は、可能な場合は、より少ない破壊的な選択肢と警告を置き換えることをお勧め。そこにはJQuery UI dialogのようなたくさんのオプションがあります。

+0

ありがとうこれは最初のコードスニペットを使用しています。 – pixelmatt

3
var oldalert = alert; 
alert = jasmine.createSpy(); 
// do something 
expect(alert).toHaveBeenCalledWith('message') 
alert = oldalert 
+0

これもうまくいきます。問題は、Chromeで呼び出されるネイティブアラート機能を停止しないことです。これは、たくさんのテストを実行する必要がある場合には迷惑になる可能性があります。 – pixelmatt

+0

を使用すると、私の目的のためにネイティブアラート機能を上書きします。 window.alert = jasmine.createSpy().CallFake(function(message){ console.log( "fake Alert"); }); – pixelmatt

+0

これは常に最新の警告メッセージを表示する正しい方法です – Ulterior

1

別の方法は、スペックヘルパーでこれを行うことです。

window.alert = function(){return;}; 
+2

彼は「アラートのメッセージは何だったのか」を知りたがっています。このソリューションは本当に役立つものではありませんが、警告ダイアログを表示しません。 –

59
spyOn(window, 'alert'); 
. . . 
expect(window.alert).toHaveBeenCalledWith('a message'); 
+6

これは受け入れられる回答である必要があります –

+0

これは正しい答えです。 – superluminary

+0

確認または却下する権限を持つwindow.confirmはどうですか? – rook

関連する問題