Hier ist meine Controller:Fehler: Erwartet einen Spion, bekam aber Funktion
export class testController {
static $inject: string[] = ["testService", "$mdDialog", "$state"];
constructor(public _testService: services.testService, private _mdDialog: any, private _$state: any) {
this.isCurrentlyEditing = false;
this.activate();
}
}
Hier ist meine Unit-Test dafür:
import {test as service} from './test.service';
import {test as ctrl} from './test.controller';
export function main() {
describe("testController",() => {
var mdDialog: angular.material.IDialogService;
var state: ng.ui.IStateService;
var testService: any;
var controller: any;
beforeEach(function() {
angular.mock.module('comp.modules.addField');
});
beforeEach(function() {
testService = {
showCLULayer:() => { }
};
});
beforeEach(module('comp'));
beforeEach(inject(($injector: any) => {
mdDialog = $injector.get('$mdDialog');
state = $injector.get('$state');
testService = $injector.get('testService');
controller = new ctrl.testController(testService, mdDialog, state);
}));
it("should Create Controller",() => {
controller = new ctrl.testController(testService, mdDialog, state);
spyOn(testService, 'showCLULayer').and.callThrough();
expect(controller).not.toBeNull();
expect(controller.activate).toHaveBeenCalled();
////error Expected a spy, but got Function.
});
});
}
Der Test wirft Fehler, wenn es geht auf der Linie:
expect(controller.activate).toHaveBeenCalled();
sagen, dass Exp einen Spion, bekam aber Funktion. Aktivieren ist eine Funktion, die aufgerufen wird, wenn ich den Konstruktor meines Controllers, den ich gerade teste, aufruft. Kann mir bitte jemand in die richtige Richtung zeigen?
Versucht, die Zeile hinzufügen
spyOn(controller, 'activate');
vor erwarten, ich bin mit dem folgenden Fehler.
Expected spy activate to have been called.
Error: Expected spy activate to have been called.
OK, so dass Sie jetzt einen offiziellen Testfehler sind immer. Wird die 'activate' Funktion während der Instantiierung Ihres Controllers aufgerufen? – sma
ja es wird aufgerufen. – Aj1