在powermockito中,如何模拟一个对象,该对象具有另一个模拟对象作为参数?

up9lanfz  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(312)

我有这些方法

public File getFileDetails(File file){
                  FileDetailMaker fileDetailMaker = new FileDetailMaker(getFileNumber(File.getName()));
                  return fileDetailMaker;
        }

        public String getFileNumber(String fileName){
                 return  fileName.substring(0,fileName.indexOf(".")).substring(0,8);
        }

我正在编写一个测试getfiledetails()方法的测试用例。如果我通过创建一个mock“file”对象并发送mock of“file”作为参数来测试它,我将得到一个空指针异常,因为从mock文件中无法获得子字符串。
我还模拟了filedetailmaker对象的创建

FileDetailMaker fileDetailMaker = Mockito.mock(FileDetailMaker.class);

PowerMockito.whenNew(FileDetailMaker.class).withAnyArguments().thenReturn(fileDetailMaker);

但我仍然得到空指针异常。那么你能帮我提出一些关于这个问题的建议吗

liwlm1x9

liwlm1x91#

将此添加到您的测试用例中

PowerMockito.when(file.getName()).thenReturn("filenameisthis.extension");

其中file是文件类型的模拟对象

相关问题