在Jasmine测试中访问IIFE

时间:2016-01-17 19:49:41

标签: javascript testing scope jasmine

我有一个JavaScript“类”,如下所示:

(function() {
  'use strict';

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

  Calculator.prototype.add = true;

  return Calculator;
}());

现在我试图用Jasmine测试它 - 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,但问题是计算器在全球范围内不可用。我想是。

1 个答案:

答案 0 :(得分:4)

你必须让Calculator全局可访问才能测试它。 (并且......你将如何在其他代码块中使用它?)通过将IIFE分配给变量来实现此目的的最简单方法是:

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

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

  Calculator.prototype.add = true;

  return Calculator;
}());