Вы можете использовать Mockito argTaht
, чтобы использовать свой собственный сопоставитель.
В вашем случае вы можете реализовать это так:
when(x.m(anyString(), argThat((Object[] o) -> o.length == 2 && o[0] instanceof String && o[1] == null)))
.thenReturn("mocked value");
Конечно, вы можете добавить дополнительную проверку и проверить, если это необходимо.
И теперь, если вы назовете это так, вы получите поддельное значение:
String mocked = x.m("string", new Object[]{"string", null});
assertEquals("mocked value", mocked);
Любой другой вызов вернет null
:
String notMocked = x.m("string", new Object[]{"string", "string"});
assertNull(notMocked);