在javascript中测试承诺处理不起作用

在javascript中测试承诺处理不起作用,javascript,jasmine,Javascript,Jasmine,在源代码中,我对Promise的成功解析进行了一些处理: function saveChanges() { this.AppsSdkResource_ .write(appssdkPackagePublishDetails) .then( function(response) { ... some processing ... }.bind(this)); } 在测试中,我将“writePackageP

在源代码中,我对Promise的成功解析进行了一些处理:

function saveChanges() {
  this.AppsSdkResource_
      .write(appssdkPackagePublishDetails)
      .then(
          function(response) {
            ... some processing ...
          }.bind(this));
}
在测试中,我将“writePackagePublishDetails”的模拟行为设置如下:

  var createSpyReturningPromise = function($q, name) {
    var defer = $q.defer();
    var spy = jasmine.createSpy(name).and.returnValue(defer.promise);
    spy.defer = defer;
    return spy;
  };
  appResource.write = createSpyReturningPromise($q, 'write');
  appResource.write.defer.resolve(
    dummyResponse);
  ctrl.saveChanges({$valid: true}); // Test the method of interest.
  mockClock.tick();
  .. do assertions for the "then" processing ...
但是我发现源文件中的“then”代码没有在resposne to mockClock.tick()中执行,并且在调用源文件中的“then”代码之前,先执行该语句之后的测试代码

我做错了什么?非常感谢您的帮助。

我不得不这么做

scope.$digest();
done();
为了得到解决的承诺。

我不得不这么做

scope.$digest();
done();
让承诺得到解决