私は次の方法を持っています:
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
を設定しようとする時点でメソッドmessage.contentはnullです。このインスタンスでは、私がモックしているだけなので、クラッシュします。
私のテストが機能するようにこれをどのように模擬できますか?
回答 1 件
私は自分の問題を理解しました。質問を削除するのではなく、テストへの変更を投稿すると思いました。基本的に私はコンテンツをcontent笑していませんでした。
したがって、返されるコンテンツタイプに応じて、コンテンツのタイプを変更する必要があります。