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

时间:2014-11-24 21:13:39

标签: javascript jquery ruby-on-rails jasmine

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

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

当我运行Jasmine测试时,我收到以下错误:" ReferenceError:无法找到变量:javascriptFunction"

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

有没有办法指定Jasmine在jQuery函数中查找JavaScript函数?

1 个答案:

答案 0 :(得分:0)

好的,现在我明白了你想要实现的目标。

没有办法测试你所做的事情,因为你在评论中描述它是匿名的。这里最好的方法是将代码添加到某个地方。可以在窗口,或者最好在某个地方的某个其他类。然后,您可以随时测试调用函数的结果。

您正在使用的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-jasmine