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