我有一个场景,我需要FileInfo结构中的大部分信息 - 创建时间,上次写入时间,文件大小等。我需要能够干净地获取这些信息,但也能够真正地单元测试没有命中文件系统。
我正在使用System.IO.Abstractions
,所以除了这个之外,我的大多数课程都能获得99%的成绩。我不知道如何使用它从我的MockFileSystem
对象中获取所需的信息。
public void Initialize(IFileSystem fs, string fullyQualifiedFileName)
{
string pathOnly = fs.Path.GetDirectoryName(fullyQualifiedFileName);
string fileName = fs.Path.GetFileName(fullyQualifiedFileName);
// Here's what I don't know how to separate out and mock
FileInfo fi = new FileInfo(fullyQualifiedFileName);
long size = fi.LongLength;
DateTime lastWrite = fi.LastWriteTime;
...
...
}
非常感谢该行的任何帮助。
更新:
这与现有问题不完全相同,因为我问我如何使用System.IO.Abstractions
进行此操作,而不是如何进行此操作。
对于那些感兴趣的人,我确实找到了实现目标的方法:
FileInfoBase fi = fs.FileInfo.FromFileName(fullFilePath);
如果我使用这一行,我会在TEST和PROD环境中获得相同的信息。