我正在尝试对一个调用StreamWriter的方法进行单元测试。我试图使用System.IO.Abstraction来模拟StreamWriter,但是我找不到上一个NuGet上的接口,我也查看了源代码,但不知道什么是它的替代品,像FileInfo这样的其他东西正在按预期工作。
谢谢,
发布于 2017-06-29 16:50:41
我也在寻找如何通过System.IO.Abstractions模拟FileStream,但一开始看不到它。它挂在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对象(为了方便起见!)
发布于 2018-10-23 01:00:41
采用@BarryMcDermid的答案并稍微修改一下,你可以这样做:
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示例。
https://stackoverflow.com/questions/25844856
复制相似问题