【问题标题】:Testing javascript inside IIFE在 IIFE 中测试 javascript
【发布时间】:2014-07-26 20:04:27
【问题描述】:

我的团队领导希望我将我的 js 代码包装在一个 IIFE 立即调用的函数表达式中。我不知道如何在我的 jasmine 规范文件中进行 spyOn。

我将如何监视以下内容:

(function(){
function_1(){...}
function_2(){...}
});

spyOn(window,'function_1') 不起作用。 将窗口传递到 IIFE 不起作用。

尝试(x=function()...(function x() ... 然后spyOn(x,'function_1') 也不起作用。

我在网上找不到任何关于此的内容。

【问题讨论】:

标签: javascript jasmine iife


【解决方案1】:

@user29998,如果您可以通过 return 块公开这些功能以进行测试,您可以执行以下 jsbin 链接中的操作:http://jsbin.com/yohux/1/edit?js,console

【讨论】:

  • 我应该在我的问题中进一步澄清这一点(将进行编辑)。我想从外部文件(jasmine 规范文件)运行测试。我不能在外部茉莉花规范文件上为我工作。
  • 就像 function 中的var i 在该函数之外不可用一样,IIFE 的内容是相同的。如果您无法编辑源代码/您自己的源代码副本,那么您将无法查看这些内部信息。也就是说,如果您能够通过代码访问源代码而无需解释,那么您始终可以在调用它之前即时修改它。如果您的域未包含在 CORS 中,则这种情况不太可能发生。
  • IIFE 的本质是封装这些变量/函数。如果它们没有以任何方式暴露并且不应该暴露,那么它们基本上不能被外部测试运行器测试。我会问你的团队负责人他们实际上是如何做到这一点的,以便他们可以向你展示。在此处发布他们的答案
猜你喜欢
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 1970-01-01
相关资源
最近更新 更多