我正在使用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檢索主機。如何使用Mockito單元測試鏈式方法調用
我可以通過像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
。
有人能告訴我如何模擬鏈式方法調用。
你能用實際的代碼和測試代碼創建一個http://stackoverflow.com/help/mcve嗎?好。 – StackFlowed
@StackFlowed,你很明白,我已經添加到描述中的代碼片段覆蓋了'M','C'和'V'部分。我不認爲爲了使其可執行而放入所有代碼是絕對必要的。代碼片段足以回答這個問題。我沒有看到爲什麼應該提供任何附加代碼的有效理由(我甚至不會提供)回答我的問題。 –