次のようなクラスがあります。
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 が発生します。適切にモックされていないように見えますか?