我使用流阅读器导入一些数据,目前我在测试中硬编码一个小样本文件来完成这项工作。
将 Mock Objects 用于此以及如何使用是否明智?
除非您正在制作 StreamReader 派生类,否则我看不到任何模拟 StreamReader 的要点。如果您需要通过 StreamReader 提供测试输入,只需从任何合适的来源读取一些预定义的数据。
StreamReader是一个具体的类,所以许多模拟系统不允许你模拟它。 然而, TypeMock Isolator会。
如果您需要强制错误来自阅读器,您可能会发现您想要模拟它,而不仅仅是让它为您的测试类提供数据。如果您不需要此功能,您可能会远远领先于从其他一些流(例如MemoryStream )构建StreamReader - 这样您就不需要去磁盘获取数据。
在测试依赖于流、流读取器和流写入器的代码时,我通常使用 memorystream 对象进行测试。这里不需要模拟框架。
您可以使用工厂方法返回可以是模拟对象或实际 StreamReader 的 TextReader。