我正在使用使用JIRA的REST客户端的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"的对象,并获得主机,我可以简单地使用URI
类提供的getHost()
方法,该类别以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);
}