Czy naprawdę nie obchodzi Cię, jaka jest zawartość tablicy bajtów? Widzę to bardzo często w testach jednostkowych, gdzie ludzie używają dopasowań anyX (), ponieważ są one wygodne, ale realistycznie prawie zawsze powinieneś dbać o to, co jest przekazywane. Jeśli nie używasz odpowiedzi, która faktycznie zużywa wartość, prawdopodobnie powinien pasować do rzeczywistego oczekiwanego argumentu.
Matunos,
@Matunos: To dyskusyjne. Korzystanie z dowolnych dopasowań może uprościć testy, a kolejna osoba, która spojrzy na test, nie będzie rozpraszana niepotrzebnie precyzyjnym dopasowaniem i może skupić się na rzeczywistym celu testu.
Malik Atalla,
@tbruelle: Należy pamiętać, że każda tablica w Javie jest obiektem. To pomoże ci na początku.
Ostrzeżenie dla wszystkich: Teraz jest przestarzałe, więc wybrałbym głosowaną odpowiedź Mockito.any (byte []. Class)
Chexpir
10
Zgadzam się z Mutanos i Alecio. Ponadto można sprawdzić jak najwięcej identycznych wywołań metod (weryfikacja kolejnych wywołań w kodzie produkcyjnym, kolejność weryfikacji nie ma znaczenia). Oto kod:
Zawsze możesz utworzyć niestandardowy Matcher za pomocą argThat
Mockito.verify(yourMockHere).methodCallToBeVerifiedOnYourMockHere(ArgumentMatchers.argThat(newArgumentMatcher<Object>(){@Overridepublicboolean matches(Object argument){YourTypeHere[] yourArray =(YourTypeHere[]) argument;// Do whatever you like, here is an example:if(!yourArray[0].getStringValue().equals("first_arr_val")){returnfalse;}returntrue;}}));
Odpowiedzi:
spróbowałbym
any(byte[].class)
źródło
AdditionalMatchers.aryEq(expectedArray)
Spróbuj tego:
źródło
Wolałbym użyć
Matchers.<byte[]>any()
. To zadziałało dla mnie.źródło
Zgadzam się z Mutanos i Alecio. Ponadto można sprawdzić jak najwięcej identycznych wywołań metod (weryfikacja kolejnych wywołań w kodzie produkcyjnym, kolejność weryfikacji nie ma znaczenia). Oto kod:
źródło
Użyłem
Matchers.refEq
do tego.źródło
Możesz użyć Mockito.any (), gdy argumenty są również tablicami. Użyłem tego w ten sposób:
źródło
To, co dla mnie działa, było
org.mockito.ArgumentMatchers.isA
na przykład:
to działa dobrze.
różnica między sobą wynosi:
źródło
Zawsze możesz utworzyć niestandardowy Matcher za pomocą
argThat
źródło