返回不同的HTTP状态代码用于测试
本文关键字:代码 用于 测试 状态 HTTP 返回 | 更新日期: 2023-09-27 18:15:19
我正在为一个MVC web应用程序编写一些集成测试,这涉及到在我使用IIS Express启动的应用程序的实例中触发http post和get请求。
问题是我想断言验证已经通过(例如在帐户创建时),显然这是不可能从混合在返回的标记中的验证消息中解释的(好吧,不是不可能,但不可能)。
我目前正在做的是检查OnActionExecuted
事件中控制器基类中的ModelState
,并将状态码设置为202(接受但仍需要处理):
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (!ModelState.IsValid)
{
Response.StatusCode = 202;
}
base.OnActionExecuted(filterContext);
}
我知道202并不能真正反映发生了什么,但是没有一个适合这种情况的状态码,当应用程序正常使用时,它不会在浏览器上引起错误。
人们对这个设计有什么看法?它会有什么不良影响吗?
为什么不测试控制器呢?不需要测试栈的IIS部分。
如果你真的想这样做,我认为隐藏字段填充你想要验证的数据是一个更好的方法。
好吧…看来大多数人的意见似乎都是"不在乎"或"不知道"。
只是为了以防人们感兴趣,我决定不使用状态码,因为它有点黑客,我只是添加一个头响应代替,并做一个断言:
protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (!ModelState.IsValid)
{
Response.AddHeader("Validation", "Failed");
}
base.OnActionExecuted(filterContext);
}