私が使用している静的メソッドの 1 つは、2 つのことを行います。一部のデータを返しますが、渡される引数オブジェクトも変更します。この更新された引数オブジェクトは、後でコードで使用されます。
PowerMock を使用して戻り動作をモックしています。
2 番目の部分の定義 (入力引数の更新) のために、doAnswer メソッドを定義していますが、機能していません。私がテストしようとしている方法は次のようになります。
public void login() throws ConnectionException, AsyncApiException {
ConnectorConfig partnerConfig = new ConnectorConfig();
//This call sets the value in one member variable 'serviceEndPoint in ParterConfig which is accessed later in this method only.
partnerConnection = Connector.newConnection(partnerConfig);
//partnerConfig.getServiceEndpoint is called.
PowerMockito.mockStatic(Connector.class);
when(Connector.newConnection(Mockito.any(ConnectorConfig.class))).thenReturn(partnerConnection);
PowerMockito.doAnswer(new Answer<Void>() {
@Override
public Void answer(InvocationOnMock invocation) {
ConnectorConfig config = (ConnectorConfig) invocation.getArguments()[0];
config.setServiceEndpoint("service end point");
return null;
}
}).when(Connector.newConnection(Mockito.any(ConnectorConfig.class)));
}
しかし、上記は「ここで未完了のスタブが検出されました」というエラーをスローします。
Connector
はサードパーティ クラスなので、その動作を制御することはできません。
何か提案があれば、何がうまくいかないのでしょうか?