jasmine - javascript 测试闭包

发布于 2024-10-12 18:11:56 字数 365 浏览 2 评论 0原文

我有以下方法..我希望能够模拟一些东西,以便我可以测试 pete() 是否已被调用。当我使用闭包时不知道如何做到这一点。有什么想法吗?

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

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

I have the following methods.. I'd like to be able to mock something up so I can test whether or not pete() has been called. Not sure how to do this when im using closures. Any ideas ?

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

原野 2024-10-19 18:11:56

在自动执行的匿名函数中,您正在使用对象属性。

jim 和 pete 需要是局部变量才能通过闭包“隐藏”它们。

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

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

In your self-executing anonymous function, you're using object propertys.

jim and pete need to be local variables in order to "hide" them via closure.

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

    return {
       "publicjim": jim
    };  
})();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文