首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jasmine-node监视全局函数

使用jasmine-node监视全局函数
EN

Stack Overflow用户
提问于 2012-09-04 00:16:11
回答 1查看 3.7K关注 0票数 2

我使用jasmine-node对javascript代码进行单元测试。我有许多全局函数,我想要对它们进行spyOn,并允许调用通过原始实现。请看下面的代码作为示例。

由于一个我无法解释的原因,我看到了一个错误"globalFunction()方法不存在“。

谁能告诉我为什么jasmine不能找到这个我所理解的全局范围内的globalFunction方法。

我很感谢你的帮助

代码语言:javascript
复制
var globalFunction = function() {
    console.log('globalFunction');
};

describe("A Global Function", function() {
    jasmine.getEnv().addReporter(new jasmine.ConsoleReporter(console.log));
    it("may be spied upon", function() {
        spyOn(global,'globalFunction').andCallThrough();
        globalFunction();
        expect(globalFunction).toHaveBeenCalled();
    });
});

下面是jasmine-node的输出

代码语言:javascript
复制
$ jasmine-node  --verbose test.spec.js 
Runner Started.
A Global Function : may be spied upon ... 
Failed.
A Global Function: 0 of 1 passed.

A Global Function
  may be spied upon

Failures:

  1) may be spied upon
   Message:
     globalFunction() method does not exist
   Stacktrace:
     undefined

Finished in 0.008 seconds
1 test, 1 assertion, 1 failure


Runner Finished.
1 spec, 1 failure in 0.008s.    
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-04 01:37:31

事实上,您的globalFunction不是全局的。删除var关键字以使其成为全局关键字。

代码语言:javascript
复制
globalFunction = function() {
    console.log('globalFunction');
};

在浏览器中,顶级作用域是全局作用域。这意味着在浏览器中,如果你在全局作用域var中,会有一些东西定义一个全局变量。在Node中,这是不同的。顶级作用域不是全局作用域;var节点模块中的某些内容将是该模块的局部范围。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12251245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档