Xunit单元测试用例C#

时间:2019-05-15 01:09:09

标签: c# xunit.net

我正在Asp.Net核心中开发Web API。我编写了一些代码,使用带有存储库模式的dapper类从数据库检索数据。我在调用另一个方法的操作内使用[FromRoute]属性将值作为输入参数传递给构造函数,该操作将实体模型对象作为输入参数。

当我在控制器动作中模拟该函数并尝试将返回类型作为虚拟对象传递时,它将返回空对象而不是虚拟对象。

//I have the following controller action:

public async Task<IActionResult> GetProfileAsync([FromRoute]long ProfileId)
{
    BaseDto baseDto = new BaseDto();
    baseDto.ProfileId = ProfileId;

    var result = await _ProfileService.GetProfileAsync(baseDto);

    return Ok(result);
}

//Test Method
[Theory]
[InlineData(1237588858, 2)]
private async void Verify_If_Call_To_GetProfileCompleteStatusAsync_With_Valid_LoyaltyNumber_And_System_HasData_Returns_Ok_Status(long ProfileId, long DepartmentId)
{
    BaseDto baseDto = new BaseDto() {
        ProfileId = ProfileId
    };

    //arrange
    int statusCode = (int)HttpStatusCode.OK;
    ProfileService.Setup(m => m.GetProfileAsync(baseDto)).ReturnsAsync(GetDummyProfileData());

    MyController Mcont = new MyController(MockLog.Object, ProfileService.Object, MockSettings.Object);
    var Returns = MockMemberService.Object.GetProfileAsync(baseRequestDto).Result;

    //act
    var Myresult = await Mcont.GetProfileAsync(baseDto.ProfileId);
}

//Dummy Data Object
public ResultWithStatus GetDummyProfileData()
{
    List<ProfileDto> FindResult = new List<ProfileDto> {
        new ProfileDto {
            Flag=true,
            SourceId = 2301,
            CreateDateTime = Convert.ToDateTime("2019-05-06 08:12:05.930")
        }
    };

    return Result.Ok(FindResult.SingleOrDefault(), ReturnCode.Read);
}

注意:所有模拟对象均已在测试类构造函数中成功模拟并初始化

我试图返回虚拟对象作为响应。但是,它将在Myresult对象中抛出空值。

当我将控制器操作输入参数更改为BaseDto对象而不是long基本类型时,它可以工作。但是,当我的输入参数很长时,is不起作用。

有人可以帮我吗?

0 个答案:

没有答案