茉莉测试javascript内部函数

jasmine test javascript inner function

本文关键字:内部函数 javascript 测试      更新时间:2023-09-26

这是我的javascript代码

function organization() {
  var self = this;
  function activate() {
    // statements
  }
}

我知道方法activate()的作用域仍然在方法organization()内部,这是我面临的挑战。

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

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

但是这个测试失败,提示

TypeError: activate is not a function

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

您不需要检查实际调用或定义的私有函数'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);
});

以这种方式定义脚本。

function organization() {
  var self = this;
  self.activate = function() {
    // statements
  }}

,并像这样访问函数

var obj = new organization();
obj.activate();