首页 > 解决方案 > Task.FromResult 返回 null c# 单元测试

问题描述

我有一个单元测试,它从方法 GetClubMenuUrl 获取内容。它目前在"var result = await sut.GetClubMenuUrl(testkey);"我假设 Returns 方法未正确实现但不确定我做错了什么的行上返回 null。

[Theory]
[AutoDomainData]
public async Task When_GetClubMenuURL_WithCorrectKey_ContentReturnedAsync(
    [Frozen] Mock<IClubService> serviceMock,
    ClubService sut,
    int testkey,
    Task<TypedResponseDto<List<ClubMenuResponseDto>>> someData)
{
    
    // Arrange
    serviceMock
        .Setup(c => c.GetClubMenuUrl(It.IsAny<int>()))
         serviceMock.Setup(c => c.GetVenueMenuUrl(It.IsAny<int>()))
            .ReturnsAsync(new TypedResponseDto<List<ClubMenuResponseDto>>());

    // Act
    var result = await sut.GetClubMenuUrl(testkey);

    //Assert
    Assert.Equal(result.Data, someData.Result.Data);
}

这是我正在尝试测试的方法。

        public async Task<TypedResponseDto<List<ClubMenuResponseDto>>> GetClubMenuUrl(int clubId)
        {
            var venue = await _context.Restaurant.Where(w => w.ClubId == clubId).FirstOrDefaultAsync();

            if (club== null)
            {
                throw new ApiException(HttpStatusCode.NotFound, $"Clubwith {clubId} id does not exist");
            }

            var result = await _Service.GetBusinessMenuUrl(club);

            return new TypedResponseDto<List<ClubMenuResponseDto>>
            {
                Data = result
            };
        }

标签: c#unit-testingasp.net-core

解决方案


推荐阅读