C# 如何模拟异步搜索? [事实] 公共异步任务测试\u GetCustomer\u Status\u当\u No\u Customer\u存在时() { var customerEngine=A.Fake(); var monitorEngine=A.Fake(); var customerLog=A.Fake(); var条件=新列表(); var customers=新列表(); 变量名称=新列表 { “服务” }; var hashKey=“站点”; A.CallTo(()=>customerEngine.GetCustomers(条件)).Returns(null);//Get customers返回异步搜索 A.CallTo(()=>monitorEngine.QueryItems(hashKey,QueryOperator.BeginsWith,names)).Returns(null); CustomerManager=new CustomerManager(customerEngine、monitorEngine); 等待经理。GetCustomers(); A.CallTo(()=>customerEngine.GetCustomers(A.Ignored)).musthaveOccurs(); }
获取客户返回异步搜索 但是,如何模拟异步搜索?C# 如何模拟异步搜索? [事实] 公共异步任务测试\u GetCustomer\u Status\u当\u No\u Customer\u存在时() { var customerEngine=A.Fake(); var monitorEngine=A.Fake(); var customerLog=A.Fake(); var条件=新列表(); var customers=新列表(); 变量名称=新列表 { “服务” }; var hashKey=“站点”; A.CallTo(()=>customerEngine.GetCustomers(条件)).Returns(null);//Get customers返回异步搜索 A.CallTo(()=>monitorEngine.QueryItems(hashKey,QueryOperator.BeginsWith,names)).Returns(null); CustomerManager=new CustomerManager(customerEngine、monitorEngine); 等待经理。GetCustomers(); A.CallTo(()=>customerEngine.GetCustomers(A.Ignored)).musthaveOccurs(); },c#,C#,获取客户返回异步搜索 但是,如何模拟异步搜索? 现在有什么解决方法吗?我没有看到这个类的接口,因此很难伪造它。我看到这个问题报告给AWS,如果他们将来回来修复,我们可以做到。有很多工作要做,因为你最终会做很多的研发工作。请参考此内容并 我没有看到这个类的接口,因此很难伪造它。我看到这个问题报告给AWS,如果他们将来回来修复,我们可以做到。有很多工作要做,因为你最终会做很多的研发工作。请参考此内容并 为什么还要模拟结果?通过模拟GetCustomers可以返回任何AsyncSearch对象。因为G
现在有什么解决方法吗?我没有看到这个类的接口,因此很难伪造它。我看到这个问题报告给AWS,如果他们将来回来修复,我们可以做到。有很多工作要做,因为你最终会做很多的研发工作。请参考此内容并
我没有看到这个类的接口,因此很难伪造它。我看到这个问题报告给AWS,如果他们将来回来修复,我们可以做到。有很多工作要做,因为你最终会做很多的研发工作。请参考此内容并
为什么还要模拟结果?通过模拟
GetCustomers
可以返回任何AsyncSearch
对象。因为GetCustomers()返回AsyncSearch,所以让我尝试给出一个示例。假设有一个函数返回当前月份的日期:byte GetDayOfCurrentMonth()
。通过模拟方法本身,您可以返回任何有效(1…31)或无效(0,32…255)数据。通过模拟,您可以简化计算逻辑并返回预定义的“静态”值。您可以通过创建一个新的AsyncSearch
实例并根据测试用例的需要指定其属性来完成同样的操作。如果是异步方法,则应使用Task.FromResult
将搜索对象包装到任务中。为什么还要模拟结果?通过模拟GetCustomers
可以返回任何AsyncSearch
对象。因为GetCustomers()返回AsyncSearch,所以让我尝试给出一个示例。假设有一个函数返回当前月份的日期:byte GetDayOfCurrentMonth()
。通过模拟方法本身,您可以返回任何有效(1…31)或无效(0,32…255)数据。通过模拟,您可以简化计算逻辑并返回预定义的“静态”值。您可以通过创建一个新的AsyncSearch
实例并根据测试用例的需要指定其属性来完成同样的操作。如果是异步方法,则应使用Task.FromResult
将搜索对象包装到任务中。
[Fact]
public async Task Test_GetCustomer_Status_When_No_Customer_Exist()
{
var customerEngine = A.Fake<ICustomerEngine>();
var monitorEngine = A.Fake<IMonitorEngine>();
var customerLog = A.Fake<ILogProvider<CustomerManager>>();
var conditions = new List<ScanCondition>();
var customers = new List<Customer>();
var names = new List<string>
{
"SERVICE"
};
var hashKey = "SITE";
A.CallTo(() => customerEngine.GetCustomers(conditions)).Returns(null); // Get customers returns AsyncSearch<Customer>
A.CallTo(() => monitorEngine.QueryItems(hashKey, QueryOperator.BeginsWith, names)).Returns(null);
CustomerManager manager = new CustomerManager(customerEngine, monitorEngine);
await manager.GetCustomers();
A.CallTo(() => customerEngine.GetCustomers(A<List<ScanCondition>>.Ignored)).MustHaveHappened();
}