Моя цель — смоделировать функцию runProcedure и убедиться, что она была вызвана после того, как пользователь щелкнул. Однако тест продолжает давать сбой, хотя ясно видно, что функция runProcedure вызывается, когда пользователь щелкает страницу, и если переменная miniWindowShowing имеет значение false
, что происходит при загрузке страницы. Кто-нибудь может объяснить, как использовать QUnit с sinon для достижения этой цели? Ниже приведен код, с которым я работаю.
HTML-страница QUnit
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Function Testing</title>
<link rel="stylesheet" href="http://code.jquery.com/qunit/qunit-1.12.0.css">
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<script src="http://code.jquery.com/qunit/qunit-1.12.0.js"></script>
<script src="http://code.jquery.com/jquery-1.7.2.min.js"></script>
<script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
<script type="text/javascript" src="http://sinonjs.org/releases/sinon-1.7.3.js"></script>
<script type="text/javascript" src="http://sinonjs.org/releases/sinon-qunit-0.8.0.js"></script>
<script type="text/javascript" src="Function Source.js"></script>
<script type="text/javascript" src="TestSuite.js"></script>
<script>
test( "Test Click Calls Function", testClickCallsFunction);
</script>
</body>
</html>
Тестовый файл JavaScript
// Test that when user clicks on the page, a function is called
function testClickCallsFunction(){
var event = $.Event("click");
var funcSpy = sinon.spy(runProcedure);
$(document).trigger(event);
ok(funcSpy.called);
}
Функции JavaScript для тестирования
var miniWindowShowing = false;
$(document).ready(function () {
$(this).click(function (e) {
//Ignore input events if the mini window is showing
if(!miniWindowShowing)
{
runProcedure();
}
});
})
function runProcedure() {
}