猿问

发出 Moq'ing HttpResponseMessage

我有以下方法:


public async Task<SecurityRoleDeleteResult> DeleteSecurityRoleByRoleId(int securityRoleId)

{

    string url = $"{_housingDataSecurityConfiguration.HousingDataSecurityWebApiUrl}SecurityRoles/Delete";


    HttpResponseMessage message = _apiClientService.Post(url, securityRoleId);


    if (message.StatusCode == HttpStatusCode.InternalServerError)

    {

        return SecurityRoleDeleteResult.ErrorOccurred;

    }


    int intResult = 0;

    var apiResult = await message.Content.ReadAsStringAsync();

    if (int.TryParse(apiResult, out intResult))

    {

        return (SecurityRoleDeleteResult)intResult;

    }

    else

    {

        return SecurityRoleDeleteResult.ErrorOccurred;

    }

}

我现在正在尝试为它编写一个单元测试,到目前为止:


[Test]

public async Task DeleteSecurityRoleByRoleId()

{

    _mockApiClientService.Setup(a => a.Post(It.IsAny<string>(), It.IsAny<int>()))

        .Returns(new HttpResponseMessage {StatusCode = HttpStatusCode.OK});


    SecurityRoleDeleteResult result = await _securityRoleService.DeleteSecurityRoleByRoleId(It.IsAny<int>());


    Assert.AreEqual(SecurityRoleDeleteResult.Success, result);

}

这里的问题是,当_securityRoleService.DeleteSecurityRoleByRoleId我在方法中运行测试时,我尝试将var apiResultmessage.content设置为 null,因为在这种情况下,我只是在模拟崩溃。


我怎样才能模拟这个以便我的测试能够工作?


FFIVE
浏览 123回答 1
1回答
随时随地看视频慕课网APP
我要回答