私のPermissionHostCompatクラスのアクションrequestPermission(@NonNull String permission, int requestCode)
を模擬したいと思います。不明な理由でInvalidUseOfMatchersExceptionが発生しました
public class PermissionHostCompat {
(...)
public void requestPermission(@NonNull String permission, int requestCode) {
requestPermissions(new String[]{permission}, requestCode);
}
public void requestPermissions(@NonNull String[] permissions, int requestCode) {
if (activity != null) {
ActivityCompat.requestPermissions(activity, permissions, requestCode);
} else if (fragment != null) {
FragmentCompat.requestPermissions(fragment, permissions, requestCode);
} else {
fragmentv4.requestPermissions(permissions, requestCode);
}
}
(...)
}
あり、私はそれを行う方法です。
@Mock
PermissionHostCompat permissionHostCompat;
//...
Answer<Void> requestPermissionAction = new Answer<Void>() {
public Void answer(InvocationOnMock invocation) {
// some code
return null;
}
};
doAnswer(requestPermissionAction).when(permissionHostCompat)
.requestPermission(anyString(), anyInt());
そして、それは誤り私をスローします。私は、なぜ分からない
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers!
0 matchers expected, 2 recorded:This exception may occur if matchers are combined with raw values:
//incorrect:
someMethod(anyObject(), "raw String");
When using matchers, all arguments have to be provided by matchers.
For example:
//correct:
someMethod(anyObject(), eq("String by matcher"));
。私もany(String.class)
、any(int.class)
とすべてのオプションの組み合わせを試しました。
マイ輸入:
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import staticorg.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when;
Mockitoのバージョン:1.10.19
私が間違っているのか?それはMockito 2で動作しますが、輸入を変更する必要がある場合
あなたは[MCVE](https://stackoverflow.com/help/mcve)と、この例外を再現することはできますか? –
MCVEで動作します。エラーは別の場所にある必要があります。 – F1sher
投稿できますか?だから、他の人がエラーを再現することができます。 –