У меня есть следующий метод контроллера:
public IHttpActionResult GetAttractions([FromUri] SearchAttractionRequest request)
{
try
{
var requestParameterType = request.RequestType();
var searchResultModel = _attractionService.GetAttractions(request);
return TransformListToResult(searchResultModel.Results, request.PerPage, searchResultModel.TotalItemCount, searchResultModel.GeneratedQuery);
}
catch (Exception ex)
{
// return Content(HttpStatusCode.BadRequest, "Any object");
// return ResponseMessage(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
}
}
При выполнении запроса request.RequestType (), если переданный параметр недопустим, будет выдано исключение аргумента, и код окажется в блоке catch. У меня есть модульный тест, который я пытаюсь написать:
[Test]
public void Given_Mixed_Parameters_Expect_Error()
{
var invalidQuery = new SearchAttractionRequest
{
Category = Guid.NewGuid().ToString() + "|a catgeory|" + Guid.NewGuid().ToString(),
Genre = "",
Region = ""
};
var attractionServiceMock = Mock.Of<IAttractionService>();
var sut = new AttractionsApiController(attractionServiceMock);
Action act = () => sut.GetAttractions(invalidQuery);
act.ShouldThrow<HttpResponseException>();
}
Обычно я хочу проверить, что при отправке неверного параметра я получаю ответ об ошибке. Итак, что мне нужно отправить обратно из моего метода API и что мне нужно сделать в моем тесте, чтобы проверить на ошибку. В данный момент я получаю сообщение об ошибке в моем тесте, потому что ожидаемая ошибка - исключение аргумента, и это правильно, но я хочу подражать тому, что получит клиент.
Мне нужно сделать что-то подобное в моем тесте:
as OkNegotiatedContentResult<SomeObject>;