首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.IO.Abstraction找不到IStreamWriter

System.IO.Abstraction找不到IStreamWriter
EN

Stack Overflow用户
提问于 2014-09-15 17:31:09
回答 2查看 2.1K关注 0票数 1

我正在尝试对一个调用StreamWriter的方法进行单元测试。我试图使用System.IO.Abstraction来模拟StreamWriter,但是我找不到上一个NuGet上的接口,我也查看了源代码,但不知道什么是它的替代品,像FileInfo这样的其他东西正在按预期工作。

谢谢,

EN

回答 2

Stack Overflow用户

发布于 2017-06-29 16:50:41

我也在寻找如何通过System.IO.Abstractions模拟FileStream,但一开始看不到它。它挂在FileInfo对象上。它会导致代码稍显笨重,并需要强制转换。我的原始代码:

代码语言:javascript
复制
FileStream fileStreamBack = null;
using (fileStreamBack = new FileStream(fileFrom, FileMode.Open, FileAccess.Read))
using (var fileStreamf = new FileStream(fileTo, FileMode.Create, FileAccess.Write))
{
                fileStreamBack.CopyTo(fileStreamf);             // Use the .Net 
                fileStreamBack.Flush(); // Making sure
                fileStreamBack.Close(); // Making sure
}

现在替换为

代码语言:javascript
复制
FileStream fileStreamBack = null;
using (fileStreamBack = (FileStream)_fileSystem.FileInfo.FromFileName(fileFrom).Open(FileMode.Open, FileAccess.Read))
using (var fileStreamf = (FileStream)_fileSystem.FileInfo.FromFileName(fileTo).Open(FileMode.Create, FileAccess.Write))
        {
            fileStreamBack.CopyTo(fileStreamf);             // Use the .Net 
            fileStreamBack.Flush(); // Making sure
            fileStreamBack.Close(); // Making sure
        }

System.IO.Abstractions.TestingHelpers中还有一个MockFileStream对象(为了方便起见!)

票数 2
EN

Stack Overflow用户

发布于 2018-10-23 01:00:41

采用@BarryMcDermid的答案并稍微修改一下,你可以这样做:

代码语言:javascript
复制
using (Stream fs = _fileSystem.FileStream.Create(filePath, FileMode.Create))
{
    ms.CopyTo(fs);
    fs.Flush();
    fs.Close(); 
}

通过将“FileStream”声明为Stream而不是FileStream,您将能够使用System.IO.Abstraction.TestingHelpers测试此代码,而不会出现异常。

有一个更完整的in my question here示例。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25844856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档