单元测试依赖于StreamReader读取文件的方法

皮疹

我该如何测试使用StreamReader读取文件的方法,我不想每次运行test时都在硬盘上创建文件,我只需要sr.ReadToEnd();即可。成为我期望的字符串

public class ConfigStore : IConfigStore
{
    public string ReadFile(string FileName)
    {
        string result;
        using(StreamReader sr=new StreamReader(FileName) )
        {
            result= sr.ReadToEnd();
        }

        //logic to be tested
        return result+1;
    }
}

和我的测试课

[TestClass]
public class UnitTest2
{
    [TestMethod]
    public void Shoud_Add_1_To_File_Content()
    {
        //arrange
        ConfigStore configStore = new ConfigStore();


        //act
        var returntype=configStore.ReadFile("config.json");

        //assert
        Assert.AreEqual ("test1",returntype);

    }
}

注意:代码仅用于测试目的,并非真实的业务案例。

谢谢。

塞尔曼·杨(Selman Young)

您可以使用System.IO.Abstractions库来使您的方法单元可测试。

您需要向FileSystem您的ConfigStore班级添加一个属性

// Default file system uses .NET Framework's File class
public IFileSystem FileSystem { get; set; } = new FileSystem();

其次,您需要使用此文件系统代替StreamReaderSystem.IO.File直接使用

public string ReadFile(string FileName)
{
    return FileSystem.File.ReadAllText();
}

然后,您需要实现一个伪造IFileSystem并覆盖必要的方法,例如,在File.Create方法中,您可以改为将传递的文件名添加到集合中,或者什么也不做。

然后,最后一步是创建该伪造文件系统的实例,并将其分配给ConfigStore.FileSystem您使用的文件系统。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对依赖于springBoot applicationContext的单元测试方法进行单元测试?

安全地编写依赖于相同文件资源的单元测试吗?

如何对依赖于实例属性的实例方法进行单元测试?

使用Jest对依赖于HTTP调用的代码进行单元测试的最佳方法?

如何运行依赖于Android库模块的单元测试?

当processElement依赖于广播的数据时,如何在flink中对BroadcastProcessFunction进行单元测试

如何对依赖于 redux props 的组件进行单元测试

Python-依赖于先前功能结果的单元测试功能(链式功能)

如何为依赖于其他服务或数据库的服务编写单元测试

如何对依赖于ActivatedRoute参数的组件进行单元测试?

依赖于64位itk框架的单元测试dll

依赖于其他吸气剂的单元测试Vuex吸气剂

如何对依赖于HttpContext.GetGlobalResourceObject的类进行单元测试?

依赖于全局事件总线的Vue组件的单元测试

如何对依赖于元素高度的组件进行单元测试(角度为5)?

如何对依赖于外部库“ <script src =“ http:// stripe [...]”的API进行单元测试

对依赖于数据库的函数进行单元测试

如何对依赖于其他方法的测试方法进行单元化

如何在Flutter中对依赖于第三方包装的代码进行单元测试?

当应用程序依赖于AppsFlyerLib时,robolectric单元测试失败,并出现NoClassDefFoundError

单元测试Angular服务,该服务依赖于另一个使用InjectionToken的服务

如何对一个依赖于其注册回调的Angular服务进行单元测试?

如何测试依赖于环境变量的Rust方法?

使用RSpec测试依赖于外部Cassandra调用的方法

编写依赖于IntersectionObserver调用的测试

如何测试依赖于库的代码?

如何测试依赖于硬件的功能?

Bazel查询依赖于文件

有哪些方法可以测试依赖于静态方法的方法?