将 System.IO.Abstractions 与 DirectoryInfo 结合使用

如何解决将 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?