我有以下方法:
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 apiResult 消息内容是空的,因为在这个例子中我只是在嘲笑所以崩溃。
_securityRoleService.DeleteSecurityRoleByRoleId
var apiResult
我怎样才能模拟出这一点,以便我的测试能够正常进行?
我解决了我的问题。与其删除我的问题,我想我应该把我的更改发布到测试中。基本上我没有嘲笑内容。
HttpContent content = new StringContent("4"); _mockApiClientService.Setup(a => a.Post(It.IsAny<string>(), It.IsAny<int>())) .Returns(new HttpResponseMessage { StatusCode = HttpStatusCode.OK, Content = content });
因此,根据您可能希望返回的内容类型,您可能需要更改内容的类型。