这是问题陈述。我想确认(在我的Test方法中)在我的目标方法中调用fileSystem.newWatchService()
。我在目标方法中获取了默认的FileSystem
实例(使用FileSystems.getDefault()
)。任何人都知道如何存根FileSystems.getDefault()
以便我可以返回我的Mock FileSystem实例?
这是我的测试方法。
@Test
public final void FMS_Creates_A_New_FolderWatcher_From_FileSystem()
{
try {
// Arrange
FileSystem mockFileSystem = mock(FileSystem.class);
// Your solution will go here!!!
when(FileSystems.getDefault()).thenReturn(mockFileSystem); // this doesn't work!!
// Act
FMS _target = new FMS();
_target.run();
// Assert
verify(mockFileSystem, times(1)).newWatchService();
} catch (IOException e) {
// There handled!!
e.printStackTrace();
}
}
答案 0 :(得分:1)
而不是模拟静态方法 - 通常是设计糟糕的代码的症状 - 而不是通过FileSystem
构造函数传递FMS
。这是依赖注入点的一部分。