编写“单元测试”jQuery代码?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (74)

到现在为止,我一直习惯于在ready()函数中编写所有代码,如下所示:

$(document).ready(function() {
  // all my code
});

现在我看到,使用这种方法,我的代码不是“单元可测试的”。我不能从QUnit访问Ready()里面的东西...

构建与使用ready()函数兼容并能够进行测试的jQuery代码的正确方法是什么?

是否有一个良好的开源代码库或项目可供学习和学习?

提问于
用户回答回答于

我看到两种方法。

  1. 将QUnit代码放置在文档中,以便按照自己的代码运行。
  2. 将代码放在模块中。

备选方案2如下所示:

var MyModule = (function() {
    // Your code
}());

$(document).ready(function() {
    // Quit tests, referring to MyModule.xxx
});

在选项2中,你确实无法访问模块中的私有元素。

用户回答回答于

让你的代码在就绪处理程序中只调用就绪处理程序之外的函数:

$(document).ready(function() {
  // call some functions outside of handler
});

// most of my code

这样,你也可以调用这些函数进行单元测试。

注意,有条捷径$(document).ready:

$(function() {
  // call some functions outside of handler
});

// most of my code

扫码关注云+社区

领取腾讯云代金券