c# - 在try/catch中捕获异常后如何测试Api是否返回特定消息
问题描述
我正在 xunit 中编写测试方法。因此,当用户注册失败时,会在 catch 块中返回特定消息。在测试方法中,我想检查是否返回了正确的消息。但是当我跑步时,我收到了这条消息:
EnrollUser failed with HTTP response code:BadRequest.
如果有人可以帮助我找出可能的话,如何检索我想要的消息。下面是代码。
public async Task<IHttpActionResult> EnrollUser([FromUri]int id, int userId, int?
organizationId = null)
{
try
{
if (organizationId.HasValue)
{
Do something.....
}
else
{
Do something.....
}
return Ok();
}
catch (Exception e)
{
var errorMsg = $"User enrollment failed for userId:{userId}, serviceId:{id}.";
return (IHttpActionResult)BadRequest(errorMsg);
}
}
[Fact]
public async Task EnrollUser_Should_Return_Failure_Message()
{
const int userId = 2310;
const int serviceId = 9;
const string expectedMessage = "User enrollment failed for userId:{userId}, serviceId:{id}.";
Func<Task> act = () => EnrollUser(userId, serviceId);
var actualException = await Assert.ThrowsAsync<Exception>(act);
Assert.Equal(expectedMessage, actualException.Message);
}
解决方案
异常在EnrollUser
方法中处理,因此此方法永远不会抛出异常,它将返回 BadRequest 对象,而不是您可以用来比较消息。
var result = await act;
Assert.Equal(expectedMessage, act.Request);
推荐阅读
- excel - Excel:替换变量名的函数
- sql-server - 32 位与 64 位版本的 MS Word 中的 ADODB SQL 连接
- c# - 在 Web API 中未调用 post 方法
- python - python名称修饰和全局变量
- sapui5 - 根据表格的行索引(行号)和模型数据的属性操作图标属性
- java - 使用密钥认证的 JAVA SSH 客户端
- android - 如何在父级为滚动视图的约束布局中将元素放在另一个下方
- java - 计算器点功能问题android
- python - 为什么两个带有 utf-8 和相同汉字的变量在 python 中不能打印相同的字符?
- r - 如何在 R 中分配多个 NULL 变量