我有两个时候:

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(...);

07-24 22:34