繁体   English   中英

使用Jasmine测试jQuery中包装的Javascript函数

[英]Test Javascript Function Wrapped in jQuery using Jasmine

我正在尝试使用Jasmine在Rails应用程序中测试嵌套在jQuery函数中的JavaScript函数,如下所示:

jQuery(function(){var javascriptFunction = function(){...正在测试的功能...}}

当我运行Jasmine测试时,出现以下错误:“ ReferenceError:找不到变量:javascriptFunction”

如果将JavaScript函数放在jQuery函数之外,我将不再收到该错误; 但是,为了使应用程序的其余部分正常工作,JavaScript函数需要保留在jQuery函数中。

有没有一种方法可以指定Jasmine在jQuery函数中查找JavaScript函数?

好吧,现在我明白了您要达到的目标。

正如您在评论中所描述的那样,它是匿名的,因此无法测试您所做的事情。 最好的方法是将该代码作为功能添加到某处。 可以在窗口上,或者最好在某个地方的其他类上。 然后,您可以随时测试调用函数的结果。

您正在使用的JQuery ready函数实际上只是启动应用程序的一种方法。 它说“一切准备就绪,放手”。 在测试中,您希望这种情况能够发生并且具有可重复性,因此您不能依靠JQuery来做到这一点。

//Current working version
function doTheThing(){
   if ($("#isac").length && $("#isac")[0].checked) {
    $(".nested-form-container").show();
    enableGraduatedCheckbox();
  } else {
    $(".nested-form-container").hide();
  }   
}

jQuery (function () {
  doTheThing();
}

这是关于您要执行的操作的可测试性和相同建议的类似讨论。 https://softwareengineering.stackexchange.com/questions/204389/how-to-test-functions-or-the-code-inside-document-ready-using-茉莉花

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM