在 NET 6 中,我有一个存储库异步返回字符串,该字符串可能源自 REST API 或文本文件。由于结果可能为 null,因此任务中的返回类型为可为 null 的字符串Task<string?>:
public interface IFooRepository
{
Task<string?> FetchAsync(string path);
}
Run Code Online (Sandbox Code Playgroud)
存储库的具体类之一如下所示:
public class FooRepository : IFooRepository
{
public async Task<string?> FetchAsync(string path)
{
string? result = null;
if (File.Exists(path))
{
result = await File.ReadAllTextAsync(path);
}
return result;
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我添加了单元测试使用的模拟存储库类。这只是返回常量值。(显然,它永远不会返回 null。)
public class MockFooRepository : IFooRepository
{
public Task<string?> FetchAsync(string path)
{
string? result = "ok!";
return Task.FromResult(result);
}
}
Run Code Online (Sandbox Code Playgroud)
添加模拟存储库后,我开始收到警告消息:
类型“Task”的值中引用类型的可为空性与目标类型“Task<string?>”不匹配。
为了处理警告,我不想使用预处理器指令隐藏警告消息#pragma warning disable CS8619。 …