java—如果方法中有void方法,如何用返回值模拟方法

utugiqy6  于 2021-07-06  发布在  Java
关注(0)|答案(1)|浏览(335)

我正在测试一个类,它有一个可测试的方法(下面的方法本身)和一个返回值。使用mockito我遇到了一个问题。void方法roomdao.updatedata(outdata)有问题;

public IEntity getData(SimBasket<DataEntity, SimRequest> request) {
    Entity outData = converterData.convertNetToDatabase(request);
    roomDao.updateData(outData);
    return outData;
}

这是我的测试代码:

@Test
public void getData() {
    simRepo = new SimRepo();
    Mockito.when(simRepo.getData(request)).thenReturn(new Entity());
}

错误日志:
org.mockito.exceptions.misusing.cannotstubvoidmethodwithreturnvalue:“updatedata”是一个void方法,不能用返回值来存根!voids通常是用throw(exception).when(mock).somevoidmethod()创建的;
我似乎不太明白如何解决这个问题,因为void方法在一个返回值的方法中。

u3r8eeie

u3r8eeie1#

而不是 new SimRepo() 尝试使用mockito的mock方法来模拟它:

@Test
public void getData() {
    SimRepo simRepo =Mockito.mock(SimRepo.class);
    Mockito.when(simRepo.getData(request)).thenReturn(new Entity());
}

更新:如果您还想计算此模拟方法调用的次数,请使用此:

// this will check if mock method getData() with parameter `request` called exactly 1 times or not.

Mockito.verify(simRepo, Mockito.times(1)).getData(request);

相关问题