2016-01-17 66 views
0

我有一個JavaScript「類」,看起來像這樣:在茉莉花測試訪問IIFE

(function() { 
    'use strict'; 

    function Calculator() { 
    this.currentValue = 0; 
    } 

    Calculator.prototype.add = true; 

    return Calculator; 
}()); 

現在我想用茉莉花來測試這 - CalculatorSpec.js看起來是這樣的:

(function() { 
    'use strict'; 

    var calculator; 

    beforeEach(function() { 
    calculator = new Calculator(); 
    }); 

    describe('Calculator', function() { 

    it('should contain a function called "add"', function() { 
     expect(calculator.add).toBeTruthy(); 
    }); 
    }); 
})(); 

我該如何訪問Jasmine IIFE中的Calculator

這些文件以正確的順序包含在specrunner中,所以我相信這是一個範圍問題。

我已經嘗試將它作爲參數傳遞給IIFE,但問題是計算器在全局範圍內不可用我猜。

回答

4

您不知何故必須使Calculator全球可訪問,才能夠測試它。 (並且,您如何以其他方式在其他代碼塊中使用它?)通過將IIFE分配給變量來實現此目的的最簡單方法:

var Calculator = (function() { 
    'use strict'; 

    function Calculator() { 
    this.currentValue = 0; 
    } 

    Calculator.prototype.add = true; 

    return Calculator; 
}());