91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

南充市| 海门市| 嘉鱼县| 南和县| 沧源| 武鸣县| 孝昌县| 长宁区| 监利县| 响水县| 红原县| 南开区| 吴川市| 南投县| 海伦市| 成武县| 陆丰市| 福贡县| 静宁县| 察哈| 新巴尔虎右旗| 扶风县| 赤峰市| 永年县| 饶阳县| 和林格尔县| 西林县| 唐山市| 亚东县| 鄂州市| 诸城市| 西乌珠穆沁旗| 雅江县| 武宣县| 通辽市| 太白县| 木兰县| 墨玉县| 建始县| 澜沧| 金溪县|