Javascript angular/jasmine:错误:预期已调用spy

Javascript angular/jasmine:错误:预期已调用spy,javascript,angularjs,jasmine,Javascript,Angularjs,Jasmine,代码存在于此处,但我将在下面详细介绍: 我正在为这段代码编写测试: 这是我当前的测试文件: (function() { "use strict"; describe('qosService', function() { var service; beforeEach(module('horizon.app.core')); beforeEach(inject(function($injector) { service = $injector.get

代码存在于此处,但我将在下面详细介绍:

我正在为这段代码编写测试:

这是我当前的测试文件:

 (function() {
  "use strict";

  describe('qosService', function() {
    var service;
    beforeEach(module('horizon.app.core'));
    beforeEach(inject(function($injector) {
      service = $injector.get('horizon.app.core.network_qos.service');
    }));

    describe('getPoliciesPromise', function() {
      it("provides a promise that gets translated", inject(function($q, $injector, $timeout) {
        var neutron = $injector.get('horizon.app.core.openstack-service-api.neutron');
        var session = $injector.get('horizon.app.core.openstack-service-api.userSession');
        var deferred = $q.defer();
        var deferredSession = $q.defer();
        spyOn(neutron, 'getQoSPolicies').and.returnValue(deferred.promise);
        spyOn(session, 'get').and.returnValue(deferredSession.promise);
        var result = service.getPoliciesPromise({});
        deferred.resolve({
          data: {
            items: [{id: 123, name: 'policy1'}]
          }
        });
        $timeout.flush();
        expect(neutron.getQoSPolicies).toHaveBeenCalled();
        expect(result.$$state.value.data.items[0].name).toBe('policy1');
      }));
    });

  });

})();
当我运行测试时,我当前收到的错误是:

Expected spy getQoSPolicies to have been called.

正如您所看到的,getQoSPolicies确实被称为。如果有人能看到测试中的错误,给我这个错误,我将不胜感激!!非常感谢

您应该将以下承诺(
延迟会话
)与
中子
一个一起解决,否则它不会进入
。然后
userSession.get()的
。然后(getQoSPolicies)


与现有的解决方案一起解决,它应该按照您的预期工作

您应该将以下承诺(
延迟会话
)与
中子
一个一起解决,否则它不会进入
。然后
userSession.get()的
。然后(getQoSPolicies)


与现有的解决方案一起解决,它应该按照您的预期工作

@BethElwell很高兴我能帮忙!:)@贝瑟维尔:很高兴我能帮上忙!:)
Expected spy getQoSPolicies to have been called.
var deferredSession = $q.defer();
spyOn(session, 'get').and.returnValue(deferredSession.promise);
...
...

deferredSession.resolve({});
deferred.resolve(...);
$timeout.flush();