我使用jasmine-node对javascript代码进行单元测试。我有许多全局函数,我想要对它们进行spyOn,并允许调用通过原始实现。请看下面的代码作为示例。
由于一个我无法解释的原因,我看到了一个错误"globalFunction()方法不存在“。
谁能告诉我为什么jasmine不能找到这个我所理解的全局范围内的globalFunction方法。
我很感谢你的帮助
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的输出
$ 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. 发布于 2012-09-04 01:37:31
事实上,您的globalFunction不是全局的。删除var关键字以使其成为全局关键字。
globalFunction = function() {
console.log('globalFunction');
};在浏览器中,顶级作用域是全局作用域。这意味着在浏览器中,如果你在全局作用域var中,会有一些东西定义一个全局变量。在Node中,这是不同的。顶级作用域不是全局作用域;var节点模块中的某些内容将是该模块的局部范围。
https://stackoverflow.com/questions/12251245
复制相似问题