@Inject
private Accessor accessor;
@Dependent
public class DataReader {
String getData(String key) {
String value = accessor.getByDate(key, new Date());
return value;
}
}
public class DataReaderTest {
@Mock
Accessor accessor;
@InjectMocks @Spy
DataReader dataReader;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
when(accessor.getByDate(key, new Date())).thenReturn(now);
assertThat(dataReader.getData("key0"), is("todayData"));
}
}
when (accessor.getByDate (Schlüssel, neues Datum ())). ThenReturn (jetzt);
und tatsächlich accessor.getByDate (Schlüssel, getNow ())
aufrufen, ändert sich der Wert des Argumentes vom Typ Datum. Ich habe versagt, weil ich gelandet bin@Inject
private Accessor accessor;
@Dependent
public class DataReader {
String getData(String key) {
String value = accessor.getByDate(key, getNow());
return value;
}
Date getNow() {
return new Date();
}
}
public class DataReaderReaderTest {
@Mock
Accessor accessor;
@InjectMocks @Spy
DataReader dataReader;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void test() {
Date now = new Date();
//Das ist auch gut
//when(deviceOptionReader.getNow()).thenReturn(now);
doReturn(now).when(deviceOptionReader).getNow();
when(accessor.getByDate(key, now)).thenReturn(now);
assertThat(dataReader.getData("key0"), is("todayData"));
}
}
Schreiben Sie keinen Code, der einen neuen Datumstyp erstellt, direkt in das Argument der Methode
Recommended Posts