Einheitentestcontroller, der von der Formularvalidierung in AngularJS abhängt

8

In meinem Controller möchte ich nur dann eine Aktion aufrufen (zB auf Tab drücken), wenn das Formular gültig ist. Außerdem muss ich das Formular löschen, sobald das Formular erfolgreich eingereicht wurde. Ich habe so etwas

%Vor%

Ich möchte das testen, aber es sieht so aus, als müsste ich dieses $scope.contactForm von Hand erstellen und $setPristine() function ausgeben.

Gibt es eine andere Möglichkeit, es zu testen? Ich meine, kann ich irgendwie Instanz des zugrunde liegenden FormController in meinem Test bekommen?

Wie gehen Sie mit solchen Fällen um?

    
grafthez 03.10.2013, 10:18
quelle

2 Antworten

1

Wenn Sie das Formular auf "makellos" setzen, wirkt sich dies auf den Status des Formulars aus, das Formular wird jedoch nicht auf die Standardwerte zurückgesetzt (sofern Sie sie angegeben haben). Stattdessen können Sie die DOM-Element-Methode reset () verwenden.

In etwa so:

%Vor%

oder, da angularJS und jQuery gut abgespielt werden, können Sie CSS-Selektoren verwenden (besonders nützlich, wenn Sie mehrere Formulare gleichzeitig löschen möchten.

So etwas wie:

%Vor%

Es gibt auch reine Javascript-Möglichkeiten, dies zu tun: Ссылка

--- Zusammenfassend müssen Sie also keine speziellen Methoden verwenden, sondern einfach die DOM-Methoden, jQuery oder reines Javascript. Google wird wahrscheinlich bald einen Weg finden, dies zu tun. Hoffe, das hilft.

    
Zimon 10.01.2014 03:59
quelle
0

@grafthez Ich habe das gleiche Problem, wenn ich versuche, das Formular validiert in meinem Controller durch $ scope.myForm. $ valid.

Ich habe auf Ссылка eine Lösung gefunden. Sie können versuchen, $ compile und dann $ compile (yourFormTemplate) ($ scope) zu injizieren.

    
Kien Nguyen 07.07.2014 02:41
quelle