Java 是否可以初始化模拟对象中的某些字段

Java 是否可以初始化模拟对象中的某些字段,java,android,testing,junit,mockito,Java,Android,Testing,Junit,Mockito,我有一个测试无法正确覆盖的代码。 我正在使用Mockito图书馆。 在开始考试的那一刻,我遇到了困难 以下是测试代码: @Test public void testLoadCar() { when(remoteService.loadData()).thenReturn(new DataResult<DataCar>("", "", new DataCar())); when(dataResult.hasError()).the

我有一个测试无法正确覆盖的代码。 我正在使用Mockito图书馆。 在开始考试的那一刻,我遇到了困难

以下是测试代码:

@Test
public void testLoadCar() {
    when(remoteService.loadData()).thenReturn(new DataResult<DataCar>("", "", new DataCar()));
    when(dataResult.hasError()).thenReturn(true);
    when(dataResult.response.hasHeaders()).thenReturn(true);
    requestNetwork = new RequestNetwork(remoteService);
    Response<DataCar> response = requestNetwork.load(request);
}
我想知道这样的录音是否有效。 如果它不起作用,那么我们如何处理这一时刻:

protected Response createResponse(DataResult<T> dataResult) {
    if (dataResult.hasError()  || !dataResult.response.hasHeaders()) {
        return dataResult.getErrorMessage());
    } else {
        return Response.data(dataResult.value);
    }
}

然后用!DataResult.response.hasHeaders()我有一个问题。因为我不知道如何替换我需要的值。

不是所有与测试对象交互的对象都需要模拟。 记住,您也可以使用POJO

DataResult
看起来是POJO的完美人选。 如果可以创建具有所需状态和行为的POJO,那么使用模拟对象将一无所获

查看发布的代码,似乎很容易创建:

new DataResult<DataCar>("", "", new DataCar())

谢谢你的帮助!
when (dataResult.hasError ()). thenReturn (true);
new DataResult<DataCar>("", "", new DataCar())