Mockitoを使用して、レガシーJAAS/LDAPログインモジュールをテストしています。
javax.security.auth.callback.CallbackHandler
インターフェースは関数を定義します:
void handle(javax.security.auth.callback.Callback[] callbacks)
callbacks
にはNameCallback
が含まれていると思います。これは、テストに合格するために操作する必要があるオブジェクトです。
これを効果的にモックする方法はありますか、それともCallbackHandler
のスタブ実装を使用したほうがよいでしょうか?
void
を返す関数の場合、 doAnswer() を使用します
doAnswer(...).when(mockedObject).handle(any(Callback[].class));
また、傍受を実行するAnswer
は、doAnswer
へのパラメータとして入力する必要があります。匿名クラスとして:
new Answer() {
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
Mock mock = invocation.getMock();
return null;
}}
この場合、args
は配列Callback[]
になります!