gpt4 book ai didi

asp.net-mvc - 使用 NSubstitute 模拟任务>

转载 作者:行者123 更新时间:2023-12-01 21:20:04 24 4
gpt4 key购买 nike

我在尝试让 NSubstituteTask 返回 IEnumerable 接口(interface)时遇到问题。

我正在 mock 的工厂:

public interface IWebApiFactory<T> : IDisposable
{
<T> GetOne(int id);
Task<IEnumerable<T>> GetAll();
Task<IEnumerable<T>> GetMany();
void SetAuth(string token);
}

测试方法:

[TestMethod]
public async Task TestMutlipleUsersAsViewResult()
{
var employees = new List<EmployeeDTO>()
{
new EmployeeDTO(),
new EmployeeDTO()
};

// Arrange
var factory = Substitute.For<IWebApiFactory<EmployeeDTO>>();
factory.GetMany().Returns(Task.FromResult(employees));
}

我收到的错误是:

cannot convert from 'System.Threading.Tasks.Task> to System.Func>>

即使 ListIEnumerable,我传递列表作为 IEnumerable 的列表是否存在问题?

编辑:

这些是NSubstitute中的函数

public static ConfiguredCall Returns<T>(this T value, Func<CallInfo, T> returnThis, params Func<CallInfo, T>[] returnThese);
public static ConfiguredCall Returns<T>(this T value, T returnThis, params T[] returnThese);

最佳答案

没有一个重载与您传递的值很好匹配。第二个签名,public static ConfiguredCall Returns<T>(this T value, T returnThis, params T[] returnThese);期望值与函数的返回类型相同,因此它不是最佳匹配。

解决这个问题的最简单方法是将员工声明更改为 IEnumerable<EmployeeDTO> :

IEnumerable<EmployeeDTO> employees = new List<EmployeeDTO>()
{
new EmployeeDTO(),
new EmployeeDTO()
};

关于asp.net-mvc - 使用 NSubstitute 模拟任务<IEnumerable<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28605269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com