Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript QUnit测试间歇性失败_Javascript_Testing_Qunit - Fatal编程技术网

Javascript QUnit测试间歇性失败

Javascript QUnit测试间歇性失败,javascript,testing,qunit,Javascript,Testing,Qunit,下面是我的javascript文件,它显示了两个数字的总和 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); re

下面是我的javascript文件,它显示了两个数字的总和

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>
如果我将“Sum”模块移到“DOM”模块上方,则DOM模块中的测试会间歇性失败。我错过了什么

谢谢,
Arun

您需要将库代码与初始化代码分开,在这种情况下,您不需要测试这些代码。将click处理程序中的代码移动到另一个命名函数中,并从单独的脚本标记或文件调用该函数。这样,您就可以从测试中测试所有三个函数。当前,当测试在另一个时间点运行时,您在某个时间点执行的代码是文档就绪的。这导致了你所看到的看似随机的行为。

“单独的脚本标记”-这有什么帮助?另外,您建议如何对JS进行完整的e2e测试(而不是切换到AngularJS!!)。
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');
});