gpt4 book ai didi

java - 如何使用 Mockito 对链式方法调用进行单元测试

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:04:53 28 4
gpt4 key购买 nike

我正在开发一个使用 JIRA's REST Client 的 J2EE 项目.此客户端返回一个 Jira issue目的。Issue的部分字段类是 key , self , id , summary等等等等self这里的字段基本上是一个 URI。
例如 http://jira.company.com/rest/api/2.0/issue/12345我有一个用例,我必须从上面指定的 URI 检索主机。

我可以通过类似 issue.getSelf().getHost() 的方式来做到这一点.
issue.getSelf()返回类型为“URI”的对象并获取主机,我可以简单地使用 getHost() URI提供的方法在 String 中返回主机 url 的类格式。

一切正常。我在使用 Mockito 对这段代码进行单元测试时遇到问题。我不知道如何模拟链式方法调用。

我有以下代码片段。

private static final String JIRA_HOST = "jira.company.com";
@Mock private com.atlassian.jira.rest.client.api.domain.Issue mockIssue;

@Before
public void setup() {
when(mockIssue.getSelf().getHost()).thenReturn(JIRA_HOST);
}

在这里,我得到一个 Null Pointer Exception .

经过大量研究,我开始知道我将不得不使用 @Mock(answer = Answers.RETURNS_DEEP_STUBS) private com.atlassian.jira.rest.client.api.domain.Issue mockIssue; .
但这也给了我一个 Null Pointer Exception .

谁能告诉我如何模拟链式方法调用。

最佳答案

您不需要 RETURNS_DEEP_STUBS 或任何模拟注释。您只需要模拟链中要返回的每个对象,类似于:

@Mock Issue issue;
@Mock URI uri;

@Before
public void setup() {
when(uri.getHost()).thenReturn(JIRA_HOST);
when(issue.getSelf()).thenReturn(uri);
}

关于java - 如何使用 Mockito 对链式方法调用进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41109519/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com