如何解决将 System.IO.Abstractions 与 DirectoryInfo 结合使用
如何使用最小起订量为 DirectoryInfo 编写单元测试?我的班级如下
geoFireRef.child("\(key)").child("\(subkey)").setLocation(location)
我尝试使用 System.IO.Abstractions 并按如下方式更改了我的类,但 DirectoryInfo 不适用于 System.IO.Abstractions
$(document).on("change paste keyup","#BoxLatime,#BoxInaltime",() => {
var BoxLatime = document.getElementById("BoxLatime");
var BoxInaltime = document.getElementById("BoxInaltime");
var l = parseInt(BoxLatime.value) || 0;
var h = parseInt(BoxInaltime.value) || 0;
vr_do_l_h(l,h);
});
我得到的错误是“名称或命名空间名称‘_fileSystem’不存在。是不是因为我做的不对所以做不到?
解决方法
您可以使用以下方法实例化 IDirectoryInfo
对象:
IDirectoryInfo directory = _fileSystem.DirectoryInfo.FromDirectoryName(filePath);
所以你的完整代码看起来像:
public class DataProcessor : IDataProcessor,IDisposable
{
private readonly IFileSystem _fileSystem;
private ILogger _logger;
DataProcessor(ILogger logger) : this(new FileSystem())
{
_logger = logger;
}
internal DataProcessor(IFileSystem fileSystem)
{
_fileSystem = fileSystem;
}
public async Task Run(string filePath)
{
var dir = _fileSystem.DirectoryInfo.FromDirectoryName(filePath);
var filesInDir = dir.GetFiles("*.xml");
foreach(var filePath in filesInDir)
{
// process file
}
}
}
至于您的单元测试,我建议遵循 their GitHub page 中显示的 System.IO.Abstractions
示例。你可以像这样模拟你的文件系统:
[Test]
public void DataProcessorTestName()
{
// Arrange
var fileSystem = new MockFileSystem(new Dictionary<string,MockFileData>
{
{ @"c:\myfile.txt",new MockFileData("Testing is meh.") },{ @"c:\demo\jQuery.js",new MockFileData("some js") },{ @"c:\demo\image.gif",new MockFileData(new byte[] { 0x12,0x34,0x56,0xd2 }) }
});
var dataProcessor = new DataProcessor(fileSystem);
// Test logic here...
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。