【问题标题】:how to mock in Java如何在 Java 中模拟
【发布时间】:2020-05-12 04:56:27
【问题描述】:

我有以下代码

list.getnames().get(0).getFirstName();

代码中的这是动态的,因为当数据可用时会加载get(0)。我在 Junit 中为此编写测试,当我通过这样做来创建模拟时

when(list.getnames().get(0).getFirstName()).thenReturn(null);

然后,我得到错误:

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

我知道这是因为此时没有值,因此它的大小为 0,但是模拟该字段的正确方法是什么,所以我可以创建我的测试?

【问题讨论】:

  • 您还必须模拟列表。你可以使用 spy / mock list 来测试这个场景。另外,您能否添加更多信息,例如您正在编写的测试类型?清单上有什么?类型 ?等
  • 您在模拟 getFirstName() 调用,但如果 getnames() 返回一个空列表怎么办?那是你的问题

标签: java mocking


【解决方案1】:

您可以如下模拟List<User>User 是您的实体),

User user = new User("firstname", "lastname");

List<User> mock = mock(List.class);
when(mock.get(0)).thenReturn(user);

assertEquals("firstname", mock.get(0).getFirstName());

【讨论】:

  • 最好也解释一下为什么这可以解决他的问题,以及为什么这不能满足他的要求。
猜你喜欢
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 1970-01-01
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-05
相关资源
最近更新 更多