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());
    }

Ответы (0 шт):