使用 JMockit 模拟私有静态字段?
2022-09-04 01:23:32
我有一个像下面这样的类;
class ClassA {
private static File myDir;
// myDir is created at some stage
private static String findFile(final String fileName) {
for (final String actualBackupFileName : myDir.list()) {
if (actualBackupFileName.startsWith(removeExtensionFrom(backupFile))) {
return actualBackupFileName;
}
}
}
}
所以,基本上,我想通过模拟File类来测试这个类,这样当list()被调用时,它会返回我在测试类中定义的字符串列表。
我有以下内容,但它目前无法正常工作,可能有一些明显的事情我做错了 - 我是JMockit的新手 - 任何帮助都非常感谢!
@Mocked("list") File myDir;
@Test
public void testClassA() {
final String[] files = {"file1-bla.txt"};
new NonStrictExpectations() {{
new File(anyString).list();
returns(files);
}};
String returnedFileName = Deencapsulation.invoke(ClassA.class, "findFile","file1.txt");
// assert returnedFileName is equal to "file1-bla.txt"
}
运行上述测试时,我为ClassA中的myDir字段获得了NullPointerException - 所以看起来它没有被正确地嘲笑?