我有一些看起来像这样的代码:
var x = x || (function() {
// Some private variables
// ...
return {
init:function(options) {
// Do stuff
// ...
},
// Some other public methods
// ...
};
})();
如果我是正确的,那么这是一个单例类。现在我想用 Jasmine 为这个类写一些单元测试。我从这样的事情开始:
describe("x", function() {
var myX;
beforeEach(function(){
myX = x;
});
it("has been instatiated correctly", function() {
expect(myX.init).toBeDefined();
});
});
我的理解是,由于最外层有括号,所以这个单例在解析后立即function(){}
被实例化。在其余代码中缺少对这个单例方法的调用加强了我的假设(无论如何,在这种情况下该方法的意义是什么?)。init
init
由此得出结论,我知道
var myX;
beforeEach(function(){
myX = x;
});
不可能是对的。我已经尝试了许多其他排列来获得一些可以使用的东西(从把它全部排除在外,因为我认为在浏览器达到测试规范时已经解析了包含代码的文件,所以单例类应该可用,对吧?)。但是一切都会导致完全相同的错误消息:
ReferenceError: x is not defined
那么我该如何解决呢?
提前致谢!
- 克里斯