Mockito:如何模拟二传手的二传手



假设我有这样的代码:

public response MyMethod(Request req)
{
    String id = req.getFirst().geId();
}

我嘲笑了主要对象要求Request reqMock = mock(Request.class);

然后我做了这样的事情:

First first = new First();
first.setId("1")
req.setFirst(first);

我如何继续嘲笑成员,即 getFirst()然后geId()

感谢您的帮助

您可以侦听事件(获取名称(并覆盖返回值。例如:

private final First first = mock(First.class);
when(first.getFirst()).thenReturn("some_value");

你不应该模拟方法输入。如果要对方法进行单元测试。你必须调用具有实际值的方法,否则你不会真正测试他的行为

你想模拟 First,并让它 getFirst 返回 mockFirst。见 https://static.javadoc.io/org.mockito/mockito-core/2.13.0/org/mockito/Mockito.html#RETURNS_DEEP_STUBS

一旦你有了它,那么你就可以存根 when(mockFirst.geId(((.thenReturn("someString"(;

就个人而言,我会跳过深度存根功能并按照 Ole 在评论中所说的去做

似乎嵌套获取比嵌套集更像是您的问题。您可以通过执行以下操作来处理此问题:

Contents mockContents = Mockito.mock(Contents.class);
Mockito.when(mockContents.geId()).thenReturn("string you want to return");
Response mockResponse = Mockito.mock(Response.class);
Mockito.when(mockResponse.getFirst()).thenReturn(mockContents);

您可以根据需要将它们链接在一起,只需确保每个返回都返回模拟版本即可。

相关内容

  • 没有找到相关文章

最新更新