测试函数返回的对象的方法

时间:2017-05-09 11:09:54

标签: javascript angularjs unit-testing karma-jasmine

我有一个函数返回一个有很多方法的对象,我需要检查这个返回对象中的一个方法。我使用AngularJS和Karma + Jasmine作为测试套件。如何调用函数返回的对象内的方法?

function modalOptions() {
  .........
  return this.$q((resolve) => {
    // test accessable here
    this.solveModel = {
      save: () => {
        // test can't call save()
        this.saveToDB = this.toSendToDB;
      },
      cancel: () => { ...
      },
      delete: () => { ...
      }
    };
  });
}

我的测试有点像这样......

it('should save modal with the data', function() {

  scope.$apply();
  expect(vm.modalOptions).toBeDefined();

  vm.toSendToDB = true; // hard-coded
  vm.savedToDB = undefined // default value from other controller

  spyOn(vm, 'modalOptions').and.callThrough();
  console.log(vm.modalOptions()); // gives weird response: c{$$state: Object{status: 0}} instead of the solveModal object

  expect(vm.toSendToDB).toBeTruthy();
  expect(vm.savedToDB).toBeTruthy();

});

1 个答案:

答案 0 :(得分:0)

很抱歉,我还无法发表评论,但必须解决承诺并将solveModel传递给它,以便返回solveModel。你在哪里解决这个承诺?