c# - 与 TDD 中 Stream 类型的属性松散耦合的类

标签 c# tdd

我想编写一个类,通过 TDD 使用流类型的属性。该类将在文件系统中打开/写入文件。如下所示:

 public class Csv 
    {         
        private TextReader streamReader; //TextReader is an abstract class, parent of streamReader 
        private TextWriter streamWriter;  //similar to TextReader and StreamWriter
          //Read(), Write(), and other methods that are specific to CSV.
        }

现在可以测试了。

问题是我希望它支持每个实例的读或写,而不是两者。因为 Csv 支持读取或写入,但不支持两者。

另一个问题,类的调用者应该只提供文件名。

第三个问题,理想情况下,它应该有一个Open(string fileName)。但这可能不是必需的。

最佳答案

我建议你创建你的 CsvReader, CvsWriter 类,它将 IStream 接口(interface)作为构造函数参数,遵循依赖注入(inject)原则(就像你提到的以上)。

随着测试和代码准备就绪,您创建一个小包装器,它现在采用文件名作为构造函数/方法参数。无需测试它,因为它只不过是打开流并将功能委托(delegate)给已经测试过的代码。

关于c# - 与 TDD 中 Stream 类型的属性松散耦合的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448986/

相关文章:

c# - 如何检查一个数字在文本文件中的特定行中出现了多少次

objective-c - 在不启动模拟器的情况下在 Xcode 4 中运行逻辑测试

javascript - Jasmine - 替换函数中的变量?

unit-testing - 使用单元测试来测试不断增加的功能

ios - 使用 NSData dataWithContentsOfURL 的单元测试方法

c# - 如何使用 MigraDoc 让表情符号出现在生成的 PDF 中

c# - Windows Phone 8 ListPicker 使用 ContextMenu 导航离开但返回页面完全是空的

c# - 如何整数除以负数*向下*?

c# - 如何在 Visual Studio 中查找 MVC Controller 方法的引用

ruby-on-rails - 配置 Capybara + Selenium 以通过 SSL 进行测试