茉莉花测试javascript内部功能

时间:2015-08-20 09:25:21

标签: javascript jasmine karma-jasmine

这是我的javascript代码

function organization() {
  var self = this;

  function activate() {
    // statements
  }
}

我知道方法activate()的范围仍然在方法组织()中,这是我面临的挑战。

我的要求是在Jasmine中编写一个测试,以确保调用方法激活。

    it('activate method defined?', function() {    
      expect(activate()).toBeDefined();
    });

但是此测试失败并显示消息

  

TypeError:activate不是函数

使上述测试成功的任何输入都将非常有用。

2 个答案:

答案 0 :(得分:0)

以这种方式定义脚本。

function organization() {
  var self = this;

  self.activate = function() {
    // statements
  }}

并像这样访问功能

var obj = new organization();

obj.activate();

答案 1 :(得分:0)

您无需检查实际调用或定义的私有函数“activate”。您需要检查我所理解的公共功能“组织”是否被调用或定义,如果激活,则设置一些公共属性等。例如:

function organization() {
    var vm = this;
    activate();        
    function activate() {
        vm.activated = true;
    }
}

it('should activate organization', function() {
    organization();

    expect(vm.activated).toBe(true);
});

或者,如果您需要,您可以将功能激活为公共:

function organization() {
   var vm = this;
   vm.isActivated = false;
   vm.activate = activate;

   function activate() {
       vm.isActivated = true;
   }
}

it('should activate organization', function() {
    vm.activate();

    expect(vm.isActivated).toBe(true);
});