如何创建 FileSystemStream?

问题描述 投票:0回答:1

背景

我正在使用 System.IO.Abstractions 来模拟

File.OpenRead()
File.OpenRead()
返回
FileSystemStream
(与
System.IO
FileStream
相反)。


问题

我需要给模拟方法一个

FileSystemStream
对象来返回,但我在创建一个对象时遇到了麻烦。以下尝试会产生错误。

单元测试代码:

var stream = new MemoryStream();
mockFS.Setup(x => x.File.OpenRead(dropFolderPath)).Returns(stream);

错误:

cannot convert from 'System.IO.MemoryStream' to 'System.IO.Abstraction.FileSystemStream'

我尝试过的事情

  • System.IO.Abstractions 的 README.md 没有记录这一点。
  • 铸造
    MemoryStream
    和其他对象的各种迭代会导致
    cannot convert from 'System.IO.MemoryStream' to 'System.IO.Abstraction.FileSystemStream'
c# .net unit-testing file mocking
1个回答
0
投票

解决方案

有效的是使用

System.IO.Abstraction
FileSystem
创建
FileSystemStream
对象。然后我有了一个可以从我的
File.OpenRead()
模拟返回的对象。

var fileSystem = new System.IO.Abstractions.FileSystem();
var stream = fileSystem.File.Create("my file path.txt");
mockFS.Setup(x => x.File.OpenRead("my file path.txt")).Returns(stream);
© www.soinside.com 2019 - 2024. All rights reserved.