亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

IO擴展控件(System.IO.Abstractions)

發布時間:2020-07-05 12:43:22 來源:網絡 閱讀:622 作者:石瞳禪 欄目:編程語言

剛看到這個Namespace的時候還以為是.Net Framework里自帶的包,結果查了一圈無任何結果。

果斷上Github,一擊即中https://github.com/tathamoddie/System.IO.Abstractions


先翻譯下開發者給出的簡單說明,今后再慢慢使用


類似于System.Web.Abstractions的用法,System.IO也被擴展了,它能針對IO對象進行訪問

Just like System.Web.Abstractions, but for System.IO. Yay for testable IO access!

只能用NuGet方式下載

NuGet only:

Install-Package System.IO.Abstractions

如果有需要可以下載測試幫助包

and/or:

Install-Package System.IO.Abstractions.TestingHelpers

本庫最核心的2個文件是IFileSystem和FileSystem。使用IFileSystem.File.ReadAllText等方法替換掉之前的File.ReadAllText等方法。其他API也基本完全相同,除了一些我們擴展和進行測試的方法。

At the core of the library is IFileSystem and FileSystem. Instead of calling methods like File.ReadAllText directly, use IFileSystem.File.ReadAllText. We have exactly the same API, except that ours is injectable and testable.

public class MyComponent
{
    readonly IFileSystem fileSystem;

    // <summary>Create MyComponent with the given fileSystem implementation</summary>
    public MyComponent(IFileSystem fileSystem)
    {
        this.fileSystem = fileSystem;
    }
    /// <summary>Create MyComponent</summary>
    public MyComponent() : this( 
        fileSystem: new FileSystem() //use default implementation which calls System.IO
    ) 
    {
    }

    public void Validate()
    {
        foreach (var textFile in fileSystem.Directory.GetFiles(@"c:\", "*.txt", SearchOption.TopDirectoryOnly))
        {
            var text = fileSystem.File.ReadAllText(textFile);
            if (text != "Testing is awesome.")
                throw new NotSupportedException("We can't go on together. It's not me, it's you.");
        }
    }
}

這個庫中還包含了一系列測試程序,來幫助你熟悉它。雖然它不是一個成熟的文件系統,但是它一定會給你帶來幫助的。

The library also ships with a series of test helpers to save you from having to mock out every call, for basic scenarios. They are not a complete copy of a real-life file system, but they'll get you most of the way there.

[Test]
public void MyComponent_Validate_ShouldThrowNotSupportedExceptionIfTestingIsNotAwesome()
{
    // 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\p_w_picpath.gif", new MockFileData(new byte[] { 0x12, 0x34, 0x56, 0xd2 }) }
    });
    var component = new MyComponent(fileSystem);

    try
    {
        // Act
        component.Validate();
    }
    catch (NotSupportedException ex)
    {
        // Assert
        Assert.AreEqual("We can't go on together. It's not me, it's you.", ex.Message);
        return;
    }

    Assert.Fail("The expected exception was not thrown.");
}

我們甚至支持把.NET框架里不可測試的類型加入到測試程序里

We even support casting from the .NET Framework's untestable types to our testable wrappers:

FileInfo SomeBadApiMethodThatReturnsFileInfo()
{
    return new FileInfo("a");
}

void MyFancyMethod()
{
    var testableFileInfo = (FileInfoBase)SomeBadApiMethodThatReturnsFileInfo();
    //...
}





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彭阳县| 东兴市| 香河县| 建德市| 滨海县| 辽中县| 镇巴县| 天等县| 乌拉特后旗| 疏勒县| 陈巴尔虎旗| 九龙城区| 临颍县| 隆子县| 兴国县| 永胜县| 库伦旗| 温泉县| 五河县| 保康县| 新津县| 新龙县| 北川| 五寨县| 五大连池市| 常宁市| 辉县市| 七台河市| 鄂伦春自治旗| 方城县| 大洼县| 汉阴县| 宁阳县| 金湖县| 比如县| 德保县| 墨江| 垦利县| 西乡县| 明光市| 林芝县|