Mockito ArgumentMatcher sagen, die Argumente sind Unterschiedlich

Ich bin mit Mockito für Unit-Tests, und ich bin mit ArgumentMatcher um zu überprüfen, ob ein bestimmtes Feld ein argument hat einen bestimmten Wert.

Ich habe eine StatusMatcher Klasse, die Sie erweitert ArgumentMatcher und prüft, ob ein Objekt der Klasse MyClass hat einen bestimmten Wert im Feld "status". Übrigens bin ich diesen Aufruf in den tests ist:

verify(myDAO, times(1)).update(argThat(new StatusMatcher("SomeStatus")));

Hier update ist die Methode des DAO, das genannt wird mit einigen MyClass-Objekt. Ich will sehen, ob er den richtigen status oder nicht. Dies ist, was ich bekomme:

Argument(s) are different! Wanted:
myDAO.update(
    <Status matcher>
);
-> at com.foo.bar.MyTest.test1 
Actual invocation has different arguments:
myDAO.update(
    com.foo.bar.MyClass
);

Beachten Sie, dass dies funktioniert perfekt für alle Testfälle mit Ausnahme eines test case. Also ich kenne das StatusMatcher etc. wurde richtig codiert. Ich bin nicht sicher, was ist anders an der Methode, wo die immer diese Ausnahme.

Was ich wissen möchte ist: unter welchen Bedingungen wird die ArgumentMatcher werfen solche Ausnahme, so kann ich herausfinden, was ich bin fehlt (Es ist für mich nicht zu fügen Sie die eigentliche Methode-codes)
Bitte sagen Sie mir, wenn die Erklärung nicht klar genug, und ich werde versuchen, es zu verbessern. Vielen Dank für das Lesen dieser weit 🙂

EDIT: Hier ist der code für meine StatusMatcher Klasse

    private class StatusMatcher extends ArgumentMatcher<MyClass> {

    private String status;
    public StatusMatcher(String hs) { 
        status = hs;
    }

    @Override
    public boolean matches(Object argument) {

        return status.equals(((MyClass)argument).getStatus());
    } 
}
  • Können Sie den code von StatusMatcher und MyClass?
  • Das problem scheint zu sein, in StatusMatcher. Bitte zeigen Sie es.
Schreibe einen Kommentar