我有两个时间:
when(mock.returnList()).thenReturn(<List>);
when(injectedMock.returnFloat()).thenReturn(float);
该错误表明 returnList() 函数无法返回 float 。我不知道到底是什么原因造成的,因为 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);
你不能那样做。如果您必须模拟被测试的类,请使用 spy :
@InjectMocks
@Spy
private Service service;
并使用反向 stub :
doReturn(randomNumber).when(service).getByName(...);
关于java - 为具有两个 When 语句的测试获取 WrongTYpeOfReturnValue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58817398/