【发布时间】:2022-09-27 22:00:37
【问题描述】:
我已经将System.IO.Abstractions.IFileSystem 接口注入到一个类中,这样我就可以对文件系统交互进行单元测试。班上有一个地方使用new FileInfo(fileName)。使用IFileSystem 接口和MockFileSystem 时的替代品是什么?
用_fileSystem.File.OpenRead 替换File.OpenRead 很简单......
public string? Decrypt(string encryptedFilePath, string privateKeyArmor, string passPhrase)
{
try
{
using var privateKeyStream = new MemoryStream(Encoding.ASCII.GetBytes(privateKeyArmor));
using var encryptedFileStream = _fileSystem.File.OpenRead(encryptedFilePath);
var inputStream = PgpUtilities.GetDecoderStream(encryptedFileStream);
...
...但我不知道如何在这里替换new FileInfo(fileName)。
private byte[] CompressFile(string fileName, CompressionAlgorithmTag algorithm)
{
var outputStream = new MemoryStream();
var compressedDataGen = new PgpCompressedDataGenerator(algorithm);
PgpUtilities.WriteFileToLiteralData(compressedDataGen.Open(outputStream), PgpLiteralData.Binary,
new FileInfo(fileName));
...
我试过_fileSystem.FileInfo.FromFileName(fileName),但它返回IFileInfo 而不是FileInfo,WriteFileToLiteralData 方法不会接受。
-
您不能模拟构造函数。
标签: c# unit-testing mocking