У меня есть работающая реализация ASP.NET Core 2.2, в которой используются контроллеры MVC и API, и я собираю проект интеграционного тестирования, чтобы охватить все, что уже было проверено вручную - в основном базовый вариант.Все работает, кроме тестов, которые используют PostAsync для POST-данных.Эти тесты всегда получают 500 внутренних ошибок сервера в ответ от клиента, и я не могу понять, почему.Ой!
Настройка TestServer - довольно стандартный подход, который я видел во многих блогах и статьях.Класс TestStartup расширяет стандартный запуск и переопределяет конфигурацию для использования базы данных в памяти с начальными данными.Затем моя база тестовых данных использует TestStartup для создания сервера и клиента, и у меня есть метод, который, как я знаю, работает отлично, для извлечения токена защиты от подделки и добавления его в формы и заголовки.Все остальные тесты, проверяющие все другие аспекты CRUD, работают, доказывая, что заполненные данные могут быть извлечены как с помощью вызовов MVC, так и API.
Вызовы POST, которые в конечном итоге завершаются ошибкой с 500 Internal Server Error, превращают его вконтроллер и последующее хранилище, просто отлично.Со всеми этими аспектами я еще не смог увидеть источник 500.
[Fact]
public async void CreatePost_ShouldReturnViewWithNewlyCreatedLabelData()
{
// Arrange
var formData = await EnsureAntiForgeryTokenOnForm(new Dictionary<string, string>()
{
{ "Name", TestDataGraph.Labels.LabelNew.Name },
{ "WebsiteUrl", TestDataGraph.Labels.LabelNew.WebsiteUrl }
});
// Act
var response = await Client.PostAsync("/labels/create", new FormUrlEncodedContent(formData));
// Assert
Assert.Equal(HttpStatusCode.Found, response.StatusCode);
Assert.Equal("/Labels", response.Headers.Location.ToString());
}
Это простой пример теста в Xunit, который пытается проверить создание нового простого объектавведите Label, через маршрут MVC, который следует стандартному формату пути, будучи созданным в качестве основы.Этот тест превратит его в контроллер и его хранилище, но ответом будет Внутренняя ошибка сервера 500.
Мог ли я пропустить что-то важное при запуске?Любые идеи для получения дополнительной информации об этой неудаче?Заранее спасибо!Я могу опубликовать больше кода или подробностей, если они будут полезны.