Mockito Argument Matchers - any(), eq()
Mockito na lejon të krijojmë objekte tallëse dhe të bllokojmë sjelljen për rastet tona të testimit. Zakonisht tallim sjelljen duke përdorur when()
dhe thenReturn()
në objektin tallës.
Mockito Argument Matchers - çdo()
Ndonjëherë duam të tallim sjelljen për çdo argument të llojit të caktuar, në atë rast, mund të përdorim përputhjet e argumenteve Mockito. Metodat e argumentit Mockito përcaktohen në klasën org.mockito.ArgumentMatchers
si metoda statike. Le të themi se kemi një klasë të përcaktuar si:
class Foo {
boolean bool(String str, int i, Object obj) {
return false;
}
int in(boolean b, List<String> strs) {
return 0;
}
int bar(byte[] bytes, String[] s, int i) {
return 0;
}
}
Le të shohim disa shembuj të përdorimit të përputhësve të argumentit mockito për të bllokuar sjelljet e përgjithshme.
Foo mockFoo = mock(Foo.class);
when(mockFoo.bool(anyString(), anyInt(), any(Object.class))).thenReturn(true);
Ne jemi duke stubbing metodën bool() për të kthyer \true për çdo argument vargu, numër të plotë dhe objekt. Të gjitha pohimet e mëposhtme do të kalojnë në këtë rast:
assertTrue(mockFoo.bool("A", 1, "A"));
assertTrue(mockFoo.bool("B", 10, new Object()));
Përputhja e argumenteve Mockito - eq()
Kur përdorim përputhësit e argumenteve, atëherë të gjitha argumentet duhet të përdorin përputhje. Nëse duam të përdorim një vlerë specifike për një argument, atëherë mund të përdorim metodën eq()
.
when(mockFoo.bool(eq("false"), anyInt(), any(Object.class))).thenReturn(false);
assertFalse(mockFoo.bool("false", 10, new Object()));
Ekzistojnë gjithashtu përputhje argumentesh për listën, grupin dhe hartën.
when(mockFoo.in(anyBoolean(), anyList())).thenReturn(10);
Nëse dëshironi të përputheni me vargje, atëherë përdorni ndonjë metodë() si kjo:
any(byte[].class)
any(Object[].class)
Mockito AdditionalMatchers
Klasa Mockito org.mockito.AdditionalMatchers
ofron disa përputhje të përdorura rrallë. Mund të specifikojmë që argumentet të jenë më të mëdha se, më të vogla se, të kryejnë operacione OSE, DHE, JO. Ne gjithashtu mund të kontrollojmë për barazinë e vargjeve.
when(mockFoo.bar(any(byte[].class), aryEq(new String[] { "A", "B" }), gt(10))).thenReturn(11);
Pra, nëse quajmë metodën bar() me ndonjë grup bajt si argument, argumentin e dytë si { \A, \B } dhe argumentin e tretë më të madh se 10, atëherë metoda stubbed do të kthejë 11. Pohimet e mëposhtme do të kalojnë për tonën metodë stubbed.
assertEquals(11, mockFoo.bar("abc".getBytes(), new String[] { "A", "B" }, 20));
assertEquals(11, mockFoo.bar("xyz".getBytes(), new String[] { "A", "B" }, 99));
Mockito Verify Argument Matchers
Përputhësit e argumenteve Mockito mund të përdoren vetëm me metodat When() dhe Verify(). Le të shohim disa shembuj të përdorimit të përputhjeve të argumenteve në metodën e verifikimit Mockito.
verify(mockFoo, atLeast(0)).bool(anyString(), anyInt(), any(Object.class));
verify(mockFoo, atLeast(0)).bool(eq("false"), anyInt(), any(Object.class));
Përmbledhje
Metodat e përputhjes së argumenteve Mockito janë shumë të dobishme në sjelljet e ngulitura në një mënyrë të përgjithshme. Ka shumë metoda për të mbuluar pothuajse të gjitha kërkesat.
Mund të shikoni më shumë shembuj të Mockito nga depoja jonë e GitHub.