ich eine ngResourceMockFactory
haben, die wie folgt aussieht:Mocking ngResource in Winkeleinheit testet
(function() {
'use strict';
angular.module('app')
.factory('NgResourceMock', ngResourceMockFactory)
;
ngResourceMockFactory.$inject = [];
function ngResourceMockFactory() {
function NgResourceMock() {
var context = this;
context.$promise.then = function() {
context.prototype.$promise.then.apply(context, arguments);
};
context.$promise.finally = function() {
context.prototype.$promise.finally.apply(context, arguments);
};
}
NgResourceMock.prototype.$promise = {
then: function(onSuccess, onError) {
this.$promise.onSuccess = onSuccess;
this.$promise.onError = onError;
},
finally: function(onComplete) {
this.$promise.onComplete = onComplete;
}
};
return NgResourceMock;
}
})();
spritze ich dies in meinen Tests in einem beforeEach
etwa so:
beforeEach(inject(function(NgResourceMock) {
ngResourceMock = new NgResourceMock();
}));
dann habe ich es wie folgt verwenden :
describe('initiateWorkflow function', function() {
beforeEach(function() {
vm.player = {id: 123};
spyOn(dataService, 'initiateWorkflow').and.returnValue(ngResourceMock);
vm.initiateWorkflow();
});
it('should call dataService.initiateWorkflow', function() {
expect(dataService.initiateWorkflow).toHaveBeenCalledWith({playerId: vm.player.id}, {});
});
});
aber ich halte die folgende Fehlermeldung zu sehen:
Das führt mich zu der Annahme, dass etwas mit meinem ngResourceMockFactory
nicht stimmt, aber ich bin mir nicht sicher, was es ist.
Der Kontext ist nur eine Instanz von NgResourceMock, daher ist 'context.prototype' nicht definiert, Sie sollten stattdessen' NgResourceMock.prototype' verwenden. Es löst nur diesen Fehler. Zum Spotten können Sie [dieses Tutorial] (https://scotch.io/tutorials/testing-angularjs-with-jasmine-and-karma-part-1) verwenden – fingerpich