mock как сделать подмену метода?
Как правильно заинекить метод? Суть в том что в main есть вызов anagram и я хочу сделать так чтобы когда вызывался anagram.makeAnagrams(arg) использовалась заглушка которая вернет "fdsa fdsa" но получаю в ответ: java.lang.NullPointerException: Cannot invoke "com.ed1.anagrams.Anagram.makeAnagrams(String)" because "this.anagram" is null
public class Main {
@SuppressWarnings("squid:S106")
public static void main(String[] args) {
Anagram anagram = new Anagram();
for (String arg : args) {
System.out.println(anagram.makeAnagrams(arg));
}
}
}
@RunWith(MockitoJUnitRunner.class)
class MainTest {
@Mock
Anagram anagram;
@InjectMocks
Main main;
// @Before
// public void setUp() {
// MockitoAnnotations.initMocks(this);
// }
@Test
void testTwoWordsWithMock() {
String sentense = "asdf asdf";
when(anagram.makeAnagrams(anyString())).thenReturn("fdsa fdsa");
PrintStream stream = mock(PrintStream.class);
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
System.setOut(stream);
String[] args = {"asdf asdf"};
Main.main(args);
verify(stream).println(captor.capture());
assertEquals("fdsa fdsa", captor.getValue());
}