Wie kann ich überprüfen, invokations mit bestimmten string-Matcher in Specs2 mit Mockito
Habe ich einen test in dieser Richtung:
httpClient.post(anyString, anyString) returns (first, second)
//do my thing
there were two(httpClient).post(anyString, anyString)
Dies funktioniert gut, aber ich wollen, stellen Sie sicher, dass der erste Aufruf übergibt einen anderen Körper als den zweiten Anruf. Der Körper ist Recht groß und ich will nicht zu tun, präzises matching auf einem strengen Beispiel. Ich hab das versucht:
there was one(httpClientMock).postMessage(anyString, argThat(contain("FOO"))
there was one(httpClientMock).postMessage(anyString, argThat(contain("FOO"))
Macht Mockito beschweren:
InvalidUseOfMatchersException:
[error] Invalid use of argument matchers!
[error] 2 matchers expected, 3 recorded:
Habe ich auch versucht:
there was one(httpClientMock).postMessage(argThat(contain("foo")), argThat(contain("FOO")))
there was one(httpClientMock).postMessage(argThat(contain("foo")), argThat(contain("FOO")))
sind die Ergebnisse in:
Wanted 1 time:
[error] -> ...
[error] But was 2 times. Undesired invocation: ...
Scheint es mir, dass so etwas möglich sein sollte, aber ich kann nicht scheinen, um es herauszufinden. Erkenntnisse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, dass dies eher ein problem mit Mockito, um mit zu beginnen. Wenn Sie mit Mockito mit specs2 und du bist im Zweifel immer drop-down auf die direkte Mockito-API:
Einen möglichen Weg, um dies zu definieren, die ein matcher wird, überprüfen Sie die aufeinander folgenden Werte ein argument:
Und die
consecutiveValues
matcher ist so definiert:Können Sie testen, den code oben. Die Fehlermeldungen sind nicht die besten aber den trick tun. In dieser situation:
Sehen Sie:
there was atLeastOne(httpClient).post(anyString) andThen atLeastOne(httpClient).post(===("s2"))