2011-01-19 39 views
1

我有以下方法..我想能够模拟一些东西,所以我可以测试是否已调用pete()。不知道如何在使用闭包时执行此操作。有任何想法吗 ?茉莉花 - JavaScript测试关闭

bla = (function(){ 
    var a = 0; 
    jim = function(){ 
     if(a==1){ 
      pete(); 
     } 
    }, 
    pete = function(){ 
     return 1; 
    } 

    var publicInterface = { 
     "publicjim": jim 
    } 
    return publicInterface; 
})(); 
+0

修正了我的例子使用正确的语法..抱歉的原因错字。 – wmitchell 2011-01-19 14:07:24

+0

(我感觉像一个schmo - 我只是回答了一些这样的刮脸网站) 你真的想测试,当你打电话给吉姆时,皮特被称为?或者你想测试,当你打电话给吉姆,发生什么事情(皮特触发器)? – user588542 2011-01-25 12:21:18

回答

3

在您的自动执行匿名函数中,您使用的是对象propertys。

jimpete需要是局部变量以便通过闭包“隐藏”它们。

var bla = (function(){ 
    var a = 1; 
    var jim = function() { 
     if (a == 1) { 
     pete(); 
     } 
    }; 
    var pete = function() { 
     return 1; 
    }; 

    return { 
     "publicjim": jim 
    }; 
})();