Ich versuche, die folgende Controller-Methode mit der Spring MVC test API zu testen:
%Vor%Wenn ich die folgende Testmethode debuggen ...
%Vor%... Ich sehe, dass " [email protected] " im Feld email von emailInfo festgelegt ist.
Allerdings bekomme ich systematisch:
%Vor%Es gibt etwas, das ich nicht mit der Spring Mvc Test API bekomme ... Kann mir bitte jemand helfen?
edit : Folgendes habe ich mir vorgenommen, nachdem ich die angegebene Antwort berücksichtigt habe:
%Vor%Es funktioniert jetzt gut.
Model
-Attribute sind String-Schlüssel-Objekt-Wert-Paare. Es wird kein Ausdruck aufgelöst. Wenn du es tust
Sie fragen, ob es ein Attribut Model
mit dem Schlüssel emailInfo.email
gibt, das den angegebenen Wert hat. Die Antwort ist offensichtlich nein, da Sie kein Model
-Attribut mit einem solchen Schlüssel haben.
Was Sie haben, ist
%Vor% Dies ist ein Model
-Attribut mit dem Schlüssel emailInfo
, das ein Objekt vom Typ EmailInfo
enthält. Sie müssen das email
-Feld des EmailInfo
-Objekts selbst vergleichen.
Sotirios hat darauf hingewiesen, dass model().attribute("attributeName")
Ihnen nicht erlaubt, zu navigieren, und das Ganze als Namen verwenden wird.
Sie können jedoch stattdessen diese Methode verwenden:
%Vor%Damit können Sie einen Hamcrest-Matcher angeben, der Ihren Attributen wie folgt entspricht:
%Vor%Stellen Sie sicher, dass Sie die Hamcrest-Bibliothek in Ihrem Klassenpfad haben und importieren Sie sie wie folgt:
%Vor%Hinweis: Das Importieren ist besonders wichtig, wenn Sie Groovy für Ihre Tests verwenden (Spock), da die Methodennamen in Hamcrest mit der Groovy-Standardbibliothek kollidieren
Tags und Links spring spring-mvc mockito spring-mvc-test hamcrest