2016-02-12 2 views
0

Ниже мой код, я не хочу, чтобы функция сервиса вызывалась, поэтому я использую шпион, но его даю ошибку. Я не могу понять это.AngularJSUnitTesting: Ожидаемая функция шпиона(), которая была вызвана

Любая помощь приветствуется.

+0

ли вы на самом деле вызова 'services.documentService.deleteDocument()' где-нибудь? – Ankh

+0

Я не уверен, но да, я хочу вызвать services.documentService.deleteDocument() и издеваться над ним, чтобы проверить – shreyansh

+0

Да, сейчас я наблюдал, что, как мне кажется, звонок не происходит внутри службы, какая ошибка я делаю во время инъекций или присвоение – shreyansh

ответ

0

вам не нужно ...

var services = { 
    documentService:null 
}; 

, что код просто запутанные вопросы.

вы должны упростить это ...

// services.documentService=_documentService_; // WHY DO THIS?? 
documentService=_documentService_; 

тогда ...

spyOn(documentService, 'deleteDocument').and.callFake ... etc 

затем ...

expect(documentService.deleteDocument).toHaveBeenCalled(); 

вы также можете попробовать ...

spyOn(loginService, 'isSuperAdmin').and.returnValue("something"); 

ВМЕСТО callFake (ваш предпологайте заявление останется без изменений)

ТАКЖЕ ...

Я предполагаю, что ваш контроллер делает ожидаемый вызов этого метода во время строительства? например, следующая линия делает ожидаемый вызов во время строительства?

controller = $controller('DetailCtrl', { $scope: $scope }); 

Другими словами ваш контроллер должен выглядеть как ...

app.controller("DetailCtrl", function($scope, documentService) { 
    // some other code 
    documentService.deleteDocument(); // MAKE SURE THIS CODE IS ACTUALLY BEING HIT IF ITS WRAPPED IN A CONDITIONAL STATEMENT 
    // some other code 
});