[java] 使用Mockito的通用“any()”方法



1 Answers

這應該工作

import static org.mockito.Matchers.any;
import static org.mockito.Mockito.verify;

verify(bar).DoStuff(any(Foo[].class));
Question

我有一個接口,需要一個Foo數組的方法:

public interface IBar {
  void doStuff(Foo[] arr);
}

我正在使用Mockito嘲笑這個接口,並且我想斷言doStuff()被調用,但我不想驗證通過什麼參數 - “不關心”。

如何使用any() ,泛型方法而不是anyObject()來編寫以下代碼?

IBar bar = mock(IBar.class);
...
verify(bar).doStuff((Foo[]) anyObject());



由於我需要為我的最新項目使用此功能(我們從1.10.19更新過一次),為了讓用戶(已使用mockito-core 2.1.0或更高版本 )保持最新,靜態來自上述答案的方法應該從ArgumentMatchers類中取得:

import static org.mockito.ArgumentMatchers.isA;
import static org.mockito.ArgumentMatchers.any;

請記住這一點,如果你打算保持你的mockito工件可能從第3版開始更新,那麼這個類可能不再存在了:

根據2.1.0及以上版本,org.mockito.Matchers的javadoc聲明:

使用org.mockito.ArgumentMatchers 。 為了避免與Hamcrest * org.hamcrest.Matchers類發生名稱衝突,現在不推薦使用此類。 這個類可能會在3.0版中被刪除。




Related