【问题标题】:thenReturn() method is throwing compilation error while mockingthenReturn() 方法在模拟时抛出编译错误
【发布时间】:2020-02-09 12:30:27
【问题描述】:

当我尝试使用 thenReturn() 方法时,它给出了编译错误 “OngoingStubbing 类型中的 thenReturn(Dimension) 方法不适用于参数 (int)” 使用下面的代码

@Test
public void LetsMockListClass() {
    List listmocked=mock(List.class);
    when(listmocked.getSize()).thenReturn(2);
    assertEquals(2, listmocked.getSize());
}

【问题讨论】:

  • 你在说什么List类?从错误消息来看,getSize() 方法似乎返回了Dimension 对象而不是Integer
  • 建议在您的 Java 代码中始终显示导入,因为许多潜在的错误隐藏在错误的导入中。
  • 我将追加导入。
  • 在这段代码中,我试图模拟 List.class

标签: unit-testing junit mocking mockito junit5


【解决方案1】:

这很可能不是 Mockito 问题,而是导入语句错误的问题:

  • java.awt.List 有一个 getSize() 方法返回一个 java.awt.Dimension 类型的对象。

  • java.util.List 有一个 size() 方法返回一个 int

具有正确导入语句的版本可能如下所示:

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.List;
import org.junit.jupiter.api.Test;

public class ListMockTest {

    @Test
    public void letsMockListClass() {
        List<?> listMock = mock(List.class);
        when(listMock.size()).thenReturn(2);
        assertEquals(2, listMock.size());
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多