返回不同的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并不能真正反映发生了什么,但是没有一个适合这种情况的状态码,当应用程序正常使用时,它不会在浏览器上引起错误。

人们对这个设计有什么看法?它会有什么不良影响吗?

返回不同的HTTP状态代码用于测试

为什么不测试控制器呢?不需要测试栈的IIS部分。

如果你真的想这样做,我认为隐藏字段填充你想要验证的数据是一个更好的方法。

好吧…看来大多数人的意见似乎都是"不在乎"或"不知道"。

只是为了以防人们感兴趣,我决定不使用状态码,因为它有点黑客,我只是添加一个头响应代替,并做一个断言:

protected override void OnActionExecuted(ActionExecutedContext filterContext)
{
    if (!ModelState.IsValid)
    {
        Response.AddHeader("Validation", "Failed");
    }
    base.OnActionExecuted(filterContext);
}