gpt4 book ai didi

javascript - 无论如何要对函数中定义的 javascript 函数进行单元测试?

转载 作者:行者123 更新时间:2023-11-29 10:54:53 26 4
gpt4 key购买 nike

我只想问我是否可以在 document.ready 中对 ExternalFunction 中的代码进行单元测试?一段时间以来,我已经尝试了很多事情,但仍然无法解决问题,我束手无策。

$(document).ready(function () {
var originalExternalFunction = ExternalFunction;
ExternalFunction = function(context, param) {
// trying to unit test the stuff in here!
}
}

我正在使用 JsTestDriver 进行单元测试。测试声明类似于 TestThisTest.prototype.test_this - function() {};

提前致谢。

最佳答案

由于在您的示例中,ExternalFunction 未在函数范围内声明,因此它是全局的(或者至少,在任何范围内它可能已在 ready< 外部定义)。因此,您可以通过将其称为全局变量来对其进行测试。

问题是,为了将函数分配给 ExternalFunction,您必须运行 ready(如果需要,您可以手动运行)。这意味着如果您将任何其他功能置于 ready 中,那么不,它不可单元测试。如果您的示例代码准确反射(reflect)了现实,那么我认为它是可以测试的。

像这样构造的要点是隐藏内部函数。如果您不想隐藏它,那么 Anon. 的建议就是您需要在更易于访问的范围内定义 newExternalFunction

如果您的函数需要使用 ready 中的变量作为闭包,您可以这样定义 newExternalFunction:

   var newExternalFunction;
$(document).ready(function () {
var originalExternalFunction = ExternalFunction;
newExternalFunction = function(context, param) {
// trying to unit test the stuff in here!
}
ExternalFunction = newExternalFunction;
}

在单元测试之前,您仍然需要确保 ready 已运行,但您不必依赖 ExternalFunction 不被重置为 originalExternalFunction.

关于javascript - 无论如何要对函数中定义的 javascript 函数进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1943100/

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