Ich habe folgende einfache Einheit Test:'undefiniert ist kein Objekt' in karma/Jasmin- Komponententest
describe('SyncController', function() {
var controller,
deferredRecount,
pouchdbServiceMock;
beforeEach(module('inspector'));
beforeEach(inject(function($controller, $q, $scope) {
deferredRecount = $q.defer();
pouchdbServiceMock = {
getRecordCounts: jasmine.createSpy('getRecordCounts spy').and.returnValue(deferredRecount.promise)
};
controller = $controller('SyncController', {
'$scope': $scope,
'pouchdbService': pouchdbServiceMock
});
}));
beforeEach(inject(function(_$rootScope_) {
$rootScope = _$rootScope_;
controller.recount();
}));
describe('recount', function() {
it('should call getRecordCounts on pouchdbService', function() {
expect(pouchdbServiceMock.getRecordCounts).toHaveBeenCalled();
});
});
});
pouchdbServiceMock.getRecordCounts
im letzten describe
Block Aufruf erzeugt einen Fehler:
TypeError: undefined is not an object (evaluating 'pouchdbServiceMock.getRecordCounts') in unit-tests/sync.controller.tests.js (line 29)
Jedoch pouchdbServiceMock
wird im zweiten beforeEach
Block zugewiesen. Was ist falsch?
Vielleicht müssen Sie die BeforeEach-Anweisungen innerhalb der zweiten beschreiben. – Hosar
Hat nicht geholfen. Derselbe Fehler. –