从JsonResult获取HttpStatus

时间:2013-09-03 15:15:31

标签: asp.net asp.net-mvc

我从我的控制器方法返回JsonResult,即

public JsonResult deleteStuff()
{
    //Do some stuff
    Response.StatusCode = (int) HttpStatusCode.NoContent;
    return Json(new {}, JsonRequestBehavior.AllowGet);
}

我想编写一个测试,确认JSON数据是一个空对象,HttpStatus是204,但我无法通过TestStack或直接从返回的对象获得结果。

e.g:

var myResult =_administratorController.DeleteTheme(dummyId);

 _administratorController
    .WithCallTo(x => x.DeleteTheme(dummyId))
    .ShouldReturnJson(x =>
        {
            Assert.That(HttpResultExtensions.ToResponseStatus(x), Is.EqualTo((int) HttpStatusCode.NoContent));
        });
    }

2 个答案:

答案 0 :(得分:0)

JsonResult不包含有关状态代码的信息。您在控制器操作中使用的Response对象上提供了此信息。所以在你的单元测试中,你可以从那里读取它。我想你必须先嘲笑它才能调用这个控制器动作,所以你已经引用了它。

答案 1 :(得分:0)

你不能把statusCode放在你的Json本身吗?

return Json(new 
{
   statusCode =(int) HttpStatusCode.NoContent
}, JsonRequestBehavior.AllowGet);