我有两个时候:
when(mock.returnList()).thenReturn(<List>);
when(injectedMock.returnFloat()).thenReturn(float);
错误是说returnList()函数无法返回浮点数。我不知道到底是什么原因造成的,因为returnList()返回一个列表。
编码:
@Mock
private Row row;
@InjectMocks
private Service service;
@Test
public void getTest() {
RowMock rowMock = new RowMock();
List<Row> rows = new ArrayList<Row>();
rowMock.setBrandCode("YYY");
rowMock.setName("NAME");
rowMock.setDataType(Float.class);
rowMock.setcValue("cValue");
rowMock.setNumberValue(randomNumber);
rowMock.setDescription("Description");
rows.add(rowMock);
when(repo.findByName(Mockito.<String>anyList())).thenReturn(rows);
when(service.getByName("NAME", "YYY", Float.class)).thenReturn(randomNumber);
}
RowMock是我创建的模拟类,实现了Row类,因此我可以从repo.findByName()返回List。
最佳答案
您正在尝试模拟普通对象:
@InjectMocks
private Service service;
...
when(service.getByName("NAME", "YYY", Float.class)).thenReturn(randomNumber);
你不能这样做。如果必须模拟被测类,请使用间谍:
@InjectMocks
@Spy
private Service service;
并使用反向存根:
doReturn(randomNumber).when(service).getByName(...);