测试用例在Document.ready上调用函数

时间:2016-09-16 11:14:56

标签: javascript jquery qunit blanket.js

我的JS代码如下所述:

if (typeof IPL === "undefined") {
    IPL = {};
}

/// <summary>Declare Namespace IPL.Register</summary>
if (typeof IPL.Register === "undefined") {
    IPL.Register = {};
}

$(document).ready(function () {
    IPL.Register.Print.initialize();
});

/// <summary>Declare Namespace IPL.Register.Print</summary>
IPL.Register.Print =
{
    /// <summary>Function to call on initialize page.</summary>
    initialize: function () {
        window.onload = function () {
            window.print();
        };
    }
};

当我运行下面提到的测试用例(Qunit.js和blanket.js)时,没有调用Document.ready函数,代码覆盖率也没有覆盖该行。 下面的测试用例工作正常,但它只包含最后一行代码并在窗口加载时初始化函数。

test("initialize test", 1, function () {
    var result = IPL.Register.Print.initialize();
    equal(undefined, result, "passed");
});

有人请协助如何编写测试用例来执行文件加载功能吗?

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是根本不测试加载事件。只需将事件处理程序放入命名函数中,然后测试该函数的行为即可。

/// <summary>Declare Namespace IPL.Register.Print</summary>
IPL.Register.Print = {
  /// <summary>Function to call on initialize page.</summary>
  initialize: function() {
    window.onload = function() {
      window.print();
    };
  },
  print: function() {
    window.print();
  }
};

test("initialize test", 1, function() {
  var result = IPL.Register.Print.print();
  equal(undefined, result, "passed");
});

http://jsfiddle.net/Tintin37/vpqjsr8L/

load事件只运行你的函数,你想通过测试load事件专门实现什么?