Хорошо, похоже, Sinon.JS - это то, что вы ищете.Я никогда не использовал его раньше, но я ответил на ваш вопрос.
Вы можете заменить глобальную функцию alert (которая на самом деле window.alert) временной функцией, которая будет записывать сообщение, которое былоотображается.
Это легко сделать в javascript (window.alert = function(msg) { savedMsg = msg; })
.Таким образом, вы можете сделать это в своем тесте.
Сложность заключается только в очистке после запуска теста.Вот где вам нужно Sinon.JS , который может интегрироваться с QUnit .Вам понадобится этот скрипт интеграции .
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" href="http://code.jquery.com/qunit/git/qunit.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://code.jquery.com/qunit/git/qunit.js"></script>
<script type="text/javascript" src="sinon-1.1.1.js"></script>
<script type="text/javascript" src="sinon-qunit-0.8.0.js"></script>
<script>
function to_test() {
window.alert("I'm displaying an alert");
return 42;
}
$(document).ready(function(){
module("Module A");
test("first skip alert test ", function() {
var stub = this.stub(window, "alert", function(msg) { return false; } );
equals(42, to_test(), "to_test() should return 42" );
equals(1, stub.callCount, "to_test() should have invoked alert one time");
equals("I'm displaying an alert",stub.getCall(0).args[0], "to_test() should have displayed an alert" );
});
});
</script>
</head>
<body>
<h1 id="qunit-header">QUnit example</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup, will be hidden</div>
</body>
</html>