次のようなコードがあります。
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
では、どうすればこれを修正できますか?
前もって感謝します!
– クリス