为了账号安全,请及时绑定邮箱和手机立即绑定

C# 单元测试 - 实际:(null) 在 xUnit 中使用 List 和 Moq 框架的结果

C# 单元测试 - 实际:(null) 在 xUnit 中使用 List 和 Moq 框架的结果

C#
海绵宝宝撒 2021-07-21 21:18:22
我是在 C# 中使用 xUnit 和 Moq 框架进行单元测试的新手。我正在尝试测试一个方法,其中它返回列表该方法负责从存储库类中的 Queryable 方法返回信息列表。这是我的测试方法。[Fact]public void SelectInfoByName_InfoHasValue_ReturnInfoSelect(){    var service = new Mock<ISearchInfoRepository>();    var selectInfo = new SelectInfoService(null, service.Object);    service.Setup(s => s.SearchInfoByName("info")).Returns(new List<Info>    {        new Info{ Name = "name1",InfoId = 1},        new Info{Name = "name2",InfoId = 2}    }.AsQueryable);    var expectedResult = new List<Info>    {        new Info{Name = "name1", InfoId = 1},        new Info{Name = "name2", InfoId = 2}    };    var result = selectInfo.SelectInfoByName("info").Result;    Assert.Equal(expectedResult, result);}这是我SelectInfoByName负责按名称返回信息列表public async Task<IEnumerable<SearchSelect>> SelectInfoByName(string info){    var infoByName = searchInfoRepo.SearchInfoByName(info);    return await infoByName.Select(info => new SearchSelect    {        text = info.Name,        value = info.InfoId    }).ToListAsync();}最后,这是我的存储库或存储类,它使用 EF 与数据库通信。// storage or repo classpublic IQueryable<Info> SearchInfoByName(string info){    return infoRepo.Info().Where(info => info.Name.Contains(name.Trim().ToLower()));}注:从.AsyncState改为.Result但仍然,实际值为null
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

当你得到你的结果时,你会要求 .AsyncState。

改为请求 .Result ,以获得实际结果:

var result = selectInfo.SelectInfoByName("info").Result;


查看完整回答
反对 回复 2021-07-31
  • 2 回答
  • 0 关注
  • 241 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信