Wie um zu testen, John papa vm.model-unit-Tests mit jasmine?
Ich benutze John papa eckigen style guide mein controller sieht so aus:
folgenden Stil John papa Stil-controller style-guide:
function testController() {
var vm = this;
vm.model = { name: "controllerAs vm test" };
}
Mein Test-code sieht folgendermaßen aus:
describe('Controller: testController', function () {
beforeEach(module('myApp'));
var testController;
beforeEach(inject(function ($controller) {
scope = {};
testController = $controller('testController', {
});
}));
it('should have vm.model defined and testController.vm.model is equal to controllerAs vm test', function () {
expect(testController.vm).toBeDefined();
expect(testController.vm.model).toBeDefined();
expect(testController.vm.model.name).toEqual("controllerAs vm test");
});
});
Ergebnis:
Test fehlgeschlagen ist:
Ergebnis-Meldung: Voraussichtlich undefiniert definiert werden.
bei stack
Also meine Frage ist, wie können wir die test-vm.Modell und weitere Variablen aus? Ich habe nicht gefunden ordnungsgemäßen Führung der Linie in der Führung der Linien: Controller
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
vm
ist gleich der Instanz selbst übervm = this;
Daher, alle Eigenschaften hängen direkt von dem Objekt.
So alle Sie tun müssen ist, ändern Sie Ihre Erwartungen zum entfernen der
vm
Eigenschaft., Um zu beweisen,, hier ist Ihre genaue Beispiel, und die damit verbundenen Jasmine-tests.
JS:
HTML:
$controller
ist nur zum telefonierennew()
, so dass es funktioniert auf die gleiche Weise.vm
ist nicht eine Eigenschaft, die auf die Steuerung... es ist eine variable, die wird geschlossen, indem der Umfang der Funktionen. Deshalb wird es nie gibt es auf Ihrem controller, wenn verwendet, auf diese Weise.$controller
nicht ändern, wie JS arbeitet.testController
ist dievm
weil Sievar vm = this
im controller. So, um Ihr test-code zu ähnlich, um Ihre controller-code, können Sie versuchen, Ihren controller zuvm
im test zu statttestController
Code für den controller
Hoffe, das hilft. Viel Glück.
Ich würde erstellen Sie ein neues Modul und injizieren es als Abhängigkeit in die app Modul es einfach zu machen und prüfbar. Testen Sie den controller mit John Papa ' s Style Guide:
Die Skillung würde jetzt wie folgt Aussehen:
Hoffe, dies hilft jemand auf der Suche nach ähnlichen Lösungen.