私はJIRA's REST Clientを使用するJ2EEプロジェクトで作業しています。 このクライアントは、Jira 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型のオブジェクトを返します。ホストを取得するには、String
形式のホストURLを返すURI
クラスによって提供されるgetHost()
メソッドを使用できます。
すべて正常です。 私は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'の部分をカバーしていることをよく理解しています。私は実行可能にするためにすべてのコードを入れることは絶対に必要ではないと思います。コードスニペットは質問に答えるのに十分です。私は、追加のコードを提供する必要がある正当な理由は見当たりません。 –