Abfrage der Spring-MVC-Test-API model (). attribute () -Methode

7

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.

    
balteo 20.09.2013, 15:02
quelle

2 Antworten

7

Model -Attribute sind String-Schlüssel-Objekt-Wert-Paare. Es wird kein Ausdruck aufgelöst. Wenn du es tust

%Vor%

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 Delimanolis 20.09.2013, 15:18
quelle
14

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

    
Adrian Lopez 14.01.2014 12:02
quelle