2013-07-21 5 views
0

Ниже представлен мой javascript-файл, который показывает сумму двух чисел.Тесты QUnit с перерывами

var getSum = function (arg1, arg2) { 
    var intArg1 = parseInt(arg1); 
    var intArg2 = parseInt(arg2); 
    return intArg1 + intArg2; 
}; 

var getSumText = function (arg1, arg2) { 
    var sum = getSum(arg1, arg2); 
    return 'The sum of ' + arg1 + ' and ' + arg2 + ' is ' + sum + '.'; 
}; 

$(document).ready(function() { 
    $("#button1").click(function (e) { 
     console.log('button clicked'); 
     var sumText = getSumText($("#arg1").val(), $("#arg2").val()); 
     $("#output1").text(sumText); 
     e.stopPropagation(); 
    }); 
}); 

Это мой файл QUnit.html.

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8" /> 
    <title>Test Suite</title> 
    <link href="Content/qunit-1.12.0.css" rel="stylesheet" /> 
    <script src="Scripts/jquery-2.0.0.min.js"></script> 
    <script src="Scripts/qunit-1.12.0.js"></script> 
    <script src="Scripts/main.js" data-cover></script> 
    <script src="Scripts/mainTests.js"></script> 
    <script src="Scripts/blanket.min.js"></script> 
</head> 
<body> 
    <h1 id="qunit-header">Test Suite</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"> 
     <input type="text" id="arg1" />&nbsp; 
     <input type="text" id="arg2" /> <br /> 
     <div id="output1">&nbsp;</div> 
     <input type="button" id="button1" value="Show sum" /> 
    </div> 
     <script type="text/javascript">function blanket_toggleSource(e) { 
    var t = document.getElementById(e); 
    t.style.display === "block" ? t.style.display = "none" : t.style.display = "block"; 
}</script> 
</body> 
</html> 

И вот мой файл испытаний js.

module('DOM'); 
test('should add correctly', 1, function() { 
    $('#arg1').val('2'); 
    $('#arg2').val('5'); 
    console.log($('#arg1').val()); 
    console.log($('#arg2').val()); 
    $('#button1').trigger('click'); 
    var output = $('#output1').text(); 

    equal(output, 'The sum of 2 and 5 is 7.', 'sum text is correct'); 
}); 

module('Sum'); 
test('should add correctly', 1, function() { 
    var sum = getSum('2', '1'); 
    deepEqual(sum, 3, 'sum is correct'); 
}); 

Если переместить модуль «СУММ» над раскладом «DOM», тест в модуле DOM обязательно с перерывами. Что мне не хватает?

Спасибо, Arun

ответ

0

Вам нужно отделить код библиотеки, которые вы можете проверить, из кода инициализации, что вы на самом деле не нужно, чтобы проверить в этом случае. Переместите код внутри обработчика кликов в другую именованную функцию и вызовите его из отдельного тега или файла сценария. Таким образом, вы можете протестировать все три функции из своих тестов. В настоящее время вы в конечном итоге получаете готовый к выполнению код в определенный момент времени, а ваши тесты выполняются на другом. Это вызывает кажущееся случайное поведение, которое вы видите.

+0

«отдельный тег сценария» - как это помогает? Кроме того, как бы вы предложили выполнить полное тестирование e2e для JS (кроме переключения на AngularJS, который есть!). – Arun

Смежные вопросы