Mam następujący regulatorowi ViewMeetingCtrl.jsSzpieg na wywołanie metody usługi, korzystając Spies jaśminu
(function() {
'use strict';
angular.module('MyApp').controller('ViewMeetingCtrl', ViewMeetingCtrl);
ViewMeetingCtrl.$inject = ['$scope', '$state', '$http', '$translate', 'notificationService', 'meetingService', '$modal', 'meeting', 'attachmentService'];
function ViewMeetingCtrl($scope, $state, $http, $translate, notificationService, meetingService, $modal, meeting, attachmentService) {
$scope.meeting = meeting;
$scope.cancelMeeting = cancelMeeting;
function cancelMeeting(meetingId, companyId) {
meetingService.sendCancelNotices(companyId, meetingId)
.success(function() {
$state.go('company.view');
});
}
}
})();
udało mi się succussfully wywołać spyOn dla cancelMeeting() ale nie z powołania Metoda sendCancelNotices. Co chcę zrobić, chcę przetestować, że kiedykolwiek zostanie wywołana cancelMeeting(), wywołuje metodę sendCancelNotices(). Wiem, że powinienem użyć metody createSpy, aby to zrobić. Ale nie jestem pewien, jak to zrobić.
Poniżej jest przypadek testowy ViewMeetingCtrlSpec.js
describe('ViewMeetingCtrl CreateSpy --> Spying --> cancelMeeting', function() {
var $rootScope, scope, $controller , $q ;
var sendCancelNoticesSpy = jasmine.createSpy('sendCancelNoticesSpy');
beforeEach(angular.mock.module('MyApp'));
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
createController = function() {
return $controller('ViewMeetingCtrl', {
$scope: scope,
meeting : {}
});
};
var controller = new createController();
}));
it("tracks that the cancelMeeting spy was called", function() {
//some assertion
});
});
faktycznie wystarczy użyć metody spyOn jak spyOn (usługa, 'metoda') http: //jasmine.github .io/2.0/introduction.html , który wywoła oryginalną metodę po wykonaniu operacji związanych z szpiegiem –