茉莉花测试javascript 内部函数

jasmine test javascript inner function

这是我的 javascript 代码

function organization() {
  var self = this;

  function activate() {
    // statements
  }
}

我知道方法 activate() 的范围仍然在方法 organization() 内,这就是我面临的挑战。

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

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

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

TypeError: activate is not a function

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

以这种方式定义脚本。

function organization() {
  var self = this;

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

并像这样访问函数

var obj = new organization();

obj.activate();

您不需要检查实际调用或定义的私有函数 'activate'。您需要检查我所理解的 public 函数 'organization' 是否被调用或定义,如果激活则设置一些 public 属性等。例如:

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

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

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

或者如果你需要,你可以将函数激活为 public:

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);
});