У меня две страницы /MyArea/Pages/Create.cshtml
и /MyArea/Pages/MyList.cshtml
. Итак, я создаю объект и завершаю его с помощью return RedirectResult("MyList")
.
Это работает в браузере.
Но во время теста интеграции (с использованием пакета Microsoft.AspNetCore.Mvc.Testing
версии 3.0), когда я открываю страницу /MyArea/Create
и отправляю форму POST:
var createConfirmHttpResponseMessage = await httpClient.SendAsync(postRequest1);
Assert.IsTrue(createConfirmHttpResponseMessage.StatusCode == HttpStatusCode.OK);
Все это возвращается
{StatusCode: 404, ReasonPhrase: 'Not Found', версия: 1.1, содержимое: System.Net.Http.StreamContent, заголовки: {Content-Length: 0}}
Объект был создан, и return RedirectResult("MyList")
был вызван
Сообщение с запросом отправлено: {Method: GET, RequestUri: 'http://localhost/MyList', Version: 1.1, Content: <null>, Headers: { Cookie: .AspNetCore.Antiforgery.... Cookie: .AspNetCore.Antiforgery....}}
Я вижу, что сообщение запроса неверно: RequestUri должен содержать область // localhost / MyArea / MyList,
Какого рода «управление текущим местоположением» я должен добавить в код интеграционного теста, чтобы заставить httpClient «уважать» эту область?
P.S. Я мог бы написать это так return RedirectResult("/MyArea/MyList")
на стороне сервера, но теперь я хочу знать, как повторить поведение браузера в интеграционном тесте?