在iLife中测试javascript

在iLife中测试javascript,javascript,jasmine,iife,Javascript,Jasmine,Iife,我的团队负责人希望我将js代码包装在一个即时调用的IIFE函数表达式中。我不知道如何在我的茉莉花规格文件中使用间谍 我将如何监视以下内容: (function(){ function_1(){...} function_2(){...} }); spyOn(窗口,'function_1')不工作。 把窗户扔进生活是行不通的 同时尝试(x=function()…和(function x()…),然后spyOn(x,'function_1')也不起作用 我在网上找不到与此相关的任何信息。@user

我的团队负责人希望我将js代码包装在一个即时调用的IIFE函数表达式中。我不知道如何在我的茉莉花规格文件中使用间谍

我将如何监视以下内容:

(function(){
function_1(){...}
function_2(){...}
});
spyOn(窗口,'function_1')
不工作。 把窗户扔进生活是行不通的

同时尝试
(x=function()…
(function x()…
),然后
spyOn(x,'function_1')
也不起作用


我在网上找不到与此相关的任何信息。

@user29998,如果您可以通过
返回
块公开这些函数进行测试,您可以执行此jsbin链接上的操作:


我应该在我的问题中进一步澄清这一点(将进行编辑)。我想从外部文件(jasmine spec文件)运行测试。我无法在外部jasmine规范文件中使用此功能。就像函数内部的
var I
在该函数外部不可用一样,IIFE的内容是相同的。如果您无法编辑源代码/您自己的源代码副本,则您将无法查看这些内部。也就是说,如果您能够通过没有解释的代码,那么在调用它之前,你可以随时修改它。如果你的域不包括在CORS中,这是不可能的。IIFE的本质是封装这些变量/函数。如果它们没有以任何方式公开,也不应该公开,它们基本上不能由外部测试运行程序测试。我会询问你的团队领导他们是如何做到这一点的,这样他们就可以向你展示。在这里张贴他们的答案这里有一个不用spyOn()就能解决这个问题的解决方案