Дать модульный тест ударить контроллер код для контроллера:Как проверить, является ли HttpResponseMessage ErrorResponse?
public HttpResponseMessage InsertByKittyId(.....
...
if (result.Success)
return Request.CreateResponse(HttpStatusCode.OK);
else
return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, new Exception(result.Message));
В моем тестовом модуле он должен генерировать ошибочный ответ с кодом:
var response = kittenController.InsertByKittenId(123);
Assert that response is an Error Response ?
var exceptionResult = (Error Response)response; ?
Assert.AreEqual("Bad Kitty", exceptionResult.Exception.Message);
Есть ли способ написать две строки с?, или мне нужно проверить, не отвечает ли код ответа не 2xx и полностью игнорирует обход ошибки? Если это так, мне нужно будет найти способ вытащить исключение.
Edit:
мне интересно, если есть способ различать CreateResponse и CreateErrorResponse, а не глядя на код ошибки, потому что в некоторых случаях я хочу приложить исключение, а в некоторых случаях это не «ошибка» как таковая.
В противном случае я мог бы просто сделать Request.CreateResponse(HttpStatusCode.InternalServerError);
Однако, возможно, нет никакой разницы?
На нем должно быть свойство IsSuccess, нет? –
Есть, но я предполагаю, что в некоторых ситуациях не будет исключения? Например, 404 не гарантирует исключения или ошибки. – NibblyPig
Ну, это зависит от того, что такое исключительные обстоятельства и что вы включаете в них. Вы либо устанавливаете '200', либо' 500', поэтому не просто утверждаете, что они существуют. Вы действительно заботитесь об исключении, которое будет указано в вашем тесте. Я ожидаю, что вы не дадите возможность исключить 500 исключений для клиентского приложения (браузера или приложения). Они предназначены только для внутреннего использования, поэтому я ожидаю, что какое-то промежуточное программное обеспечение вытащит их и не даст сообщений. (это то, что я делаю) –