gpt4 book ai didi

javascript - 如何在单元测试中调用 $(document).ready(function() {})

转载 作者:数据小太阳 更新时间:2023-10-29 05:44:57 25 4
gpt4 key购买 nike

我在单元测试中尝试调用 document.ready( function() {}) 时遇到困难。假设我的 javascript 文件中有多个,其中一个在命名函数内调用,即

function myFunction() {
$(document).ready(function() {
//...
});
}

我如何在我的单元测试中实际调用它们以便我可以实际测试它们?我正在使用 JsTestDriver 对我的 javascript 进行单元测试。

谢谢。

最佳答案

如果是单元测试,我猜你会在给定特定输入时检查函数输出?

这是我的看法:

您应该为调用 document.ready 的情况和未调用的情况做好准备。

因此,您的单元测试应该对每个函数运行两次 - 一次模拟预就绪调用,一次模拟预就绪调用。也就是说,您应该有一个演练,其中发生在 document.ready 上的任何事情都会运行,而另一个演练只是被忽略(可能会在生命周期的后期调用)。

编辑:只需重新阅读问题并了解更多。您可以重写 $(document).ready 来执行您想要的操作(这不是等待 DOMLoaded 事件触发,而是立即运行函数)。此代码段将用一个完全相同的函数替换 $(document).ready 函数。它应该在任何单元测试之前运行。

var postReady = true; // or false to ignore the function calls.
jQuery.fn.ready = function(fn)
{
if(postReady && fn) fn();
}

示例测试用例:

<html><head><title>whatever</title>
<script type="text/javascript" src="/JS/jquery-1.3.2.js"></script>

<script type="text/javascript">
var postReady = true; // or false to ignore the function calls.
jQuery.fn.ready = function(fn)
{
alert("We stole ready!");
if(postReady && fn) fn();
}

$(document).ready(function()
{
alert("The function is called.");
});
</script>
</head><body></body>
</html>

关于javascript - 如何在单元测试中调用 $(document).ready(function() {}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1837382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com