2013-09-03 2 views
0

Я возвращающая JsonResult из моего метода контроллера т.е.Получение HttpStatus от JsonResult

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

Я хочу написать тест, который подтверждает, что данные в формате JSON является пустым объектом и HttpStatus является 204, но я не могу получить результат с помощью TestStack или непосредственно из возвращаемого объекта.

например:

var myResult =_administratorController.DeleteTheme(dummyId); 

или

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

ответ

0

The JsonResult не содержит информацию о коде состояния. Эта информация доступна на объекте Response, который вы использовали в действии вашего контроллера. Таким образом, в вашем модульном тесте вы можете просто прочитать его оттуда. Я предполагаю, что вы, должно быть, издевались над ним, чтобы иметь возможность вызвать это действие контроллера, чтобы у вас уже есть ссылка на него.

0

Не можете ли вы положить statusCode в свой Json?

return Json(new 
{ 
    statusCode =(int) HttpStatusCode.NoContent 
}, JsonRequestBehavior.AllowGet); 
Смежные вопросы