[AngularJS]茉莉花的测试,用角承诺不解决与打字稿

发布时间: 2017/4/16 21:29:12
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一个相当简单的测试,利于角的承诺,而我下定决心在 beforeEach 函数中,然后在我的代码不开一枪,我看不见我不见了。 这些用打印稿的书写,但问题真的没有任何轴承。

这里是我的测试

describe('Refresh->', () => {

  var controller = new Directives.Reporting.ReportDirectiveController($scope, $q, $location);
  var called = false;
  var defer: any;

  beforeEach((done) => {
    controller.drillReport = (drillReport: Models.drillReport): ng.IPromise<Models.drillData> => {
      defer = $q.defer();
      called = true;
      defer.resolve({});
      return defer.promise;
    };
    spyOn(controller, 'processResults');
    controller.refresh();
    done();
  });

  it('Calls DrillReport', () => {
    expect(called).toBeTruthy();
  });

  it('Calls ProcessResults', () => {
    expect(controller.processResults).toHaveBeenCalled();
  });
});

控制器中的刷新方法看起来像这样︰

refresh() {
  this.drillReport({ drillReport: drillReport })
    .then((results: Models.drillData) => {
      parent.processResults(results, parent.availableDrills, this.columns, this.gridOptions, undefined, undefined);
    });
}

解决方法 1:

你缺少的是,你将需要访问使用 $scope ,或 $rootScope ,以便您可以调用,并迫使消化周期......

$scope.$digest();

这需要的原因是在消化循环期间处理的解决和被拒绝的承诺。所以虽然你在你的模拟解决的承诺,不是被调用实际承诺回调。

官方微信
官方QQ群
31647020