I have tried to look all over stackoverflow and none of the answer solves my problem.
For some reason, my mocked object is invoking the actual method when when was invoked. And this is calling the test to throw NullPointerException.
The offending line is this: when(fileReader.readLines(any(Path.class))).thenReturn(lines);
Can someone tell me what I am doing wrong and How I can fix this issue?
Below are the minimally code required to run the test
FileReaderTest.java
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.mock;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.when;
import static org.mockito.Mockito.doReturn;
import static org.mockito.ArgumentMatchers.any;
public class FileReaderTest {
    @Test 
    public void mockTest() throws IOException {
        FileReader fileReader = mock(FileReader.class);
        Stream.Builder<String> stream = Stream.builder();
        stream.add("\n");
        Stream<String> lines = stream.build();
        when(fileReader.readLines(any(Path.class))).thenReturn(lines);
    }
}
FileReader.java
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import java.nio.charset.StandardCharsets;
public class FileReader {
    private FileReader() {}
    public static final FileReader newInstance() {
        return new FileReader();
    }
    public final Stream<String> readLines(Path filePath) throws IOException {
        System.out.println("readLines");
        final FileInputStream fileInputStream 
                = new FileInputStream(filePath.toFile()); 
        final InputStreamReader inputStreamReader 
                = new InputStreamReader(fileInputStream, StandardCharsets.UTF_8);
        final BufferedReader reader = new BufferedReader(inputStreamReader);
        return reader.lines();
    }
}
STDOUT
> Task :test                                                                                          
FileReaderTest > mockTest() STANDARD_OUT                              
    readLines                                      
FileReaderTest > mockTest() FAILED                                    
    java.lang.NullPointerException                 
        at FileReader.readLines(FileReader.java:25)                   
        at FileReaderTest.mockTest(FileReaderTest.java:43)  
