Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing System.IO.Abstraction可以';我找不到IStreamWriter_Unit Testing_Mocking_Nunit_Moq - Fatal编程技术网

Unit testing System.IO.Abstraction可以';我找不到IStreamWriter

Unit testing System.IO.Abstraction可以';我找不到IStreamWriter,unit-testing,mocking,nunit,moq,Unit Testing,Mocking,Nunit,Moq,我正在尝试对调用StreamWriter的方法进行单元测试,我正在尝试使用System.IO.Abstraction来模拟StreamWriter,但是在上一次查看源代码时,我找不到接口,但不知道用什么替代它,其他东西,如FileInfo,正在按预期工作 谢谢,我还在寻找如何通过System.IO.Abstractions模拟文件流,但一开始看不到。它挂起了FileInfo对象。它会导致代码有点笨重,需要进行转换。我的原始代码: FileStream fileStreamBack = null;

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


谢谢,

我还在寻找如何通过System.IO.Abstractions模拟文件流,但一开始看不到。它挂起了FileInfo对象。它会导致代码有点笨重,需要进行转换。我的原始代码:

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
}
现在替换为

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对象(为了我们的方便!)

接受@BarryMcDermid的答案并稍微修改一下,您可以按照以下方式做一些事情:

using (Stream fs = _fileSystem.FileStream.Create(filePath, FileMode.Create))
{
    ms.CopyTo(fs);
    fs.Flush();
    fs.Close(); 
}
通过将“FileStream”声明为
而不是
FileStream
,您将能够使用System.IO.Abstraction.TestingHelpers测试此代码,而不会出现异常


有一个更全面的例子。

1。你从哪里看到System.IO.Abstracts有一个IStreamWriter接口?似乎没有。2.无论如何,为什么您需要对StreamWriter进行抽象?StreamWriter已经是一种抽象——它可以处理您提供给它的任何流。只要让你的测试给它一个MemoryStream而不是FileStream就行了。有用的是这个链接:或者这个也可能有用:@JoeWhite可能来自这里。有一种稍微简单一点的方法来获取我在回答中显示的文件流