AspNetCore Интеграционное тестирование нескольких экземпляров WebApplicationFactory? - PullRequest
0 голосов
/ 01 марта 2019

Кто-нибудь знает, возможно ли разместить несколько экземпляров WebApplicationFactory<TStartop>() в одном и том же модульном тесте?

Я пытался и, похоже, никуда не денусь с этой проблемой.

т.е.

_client = WebHost<Startup>.GetFactory().CreateClient();
var baseUri = PathString.FromUriComponent(_client.BaseAddress);
_url = baseUri.Value;

_client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
    "Bearer", "Y2E890F4-E9AE-468D-8294-6164C59B099Y");

WebHost - это просто вспомогательный класс, который позволяет мне легко построить фабрику, а затем клиента в одну строку.

Под прикрытием все, что он делает, это:

new WebApplicationFactory<TStartup>(), но и несколько других вещей.

Это было бы неплохо , если бы я мог встать на другую кучу другой сетисервер для проверки работоспособности сервера и сервера.

Кто-нибудь знает, возможно ли это или нет?

1 Ответ

0 голосов
/ 01 марта 2019

Нет.Это невозможно.WebApplicationFactory опирается на xUnit's IClassFixture, который должен применяться на уровне класса, то есть вы получаете только один укус на яблоко.Сам WebApplicationFactory может быть настроен для каждого теста, что удовлетворяет большинству случаев использования, когда вам нужен «другой», но это не помогает вам хотеть два совершенно отдельных активных тестовых сервера одновременно.

Однако, тем не менее, вам нужен плохой тестовый дизайн.Весь смысл тестирования состоит в том, чтобы исключить переменные, чтобы вы могли убедиться, что часть SUT действительно работает.Даже в среде интеграционного тестирования вы все еще смотрите на одно конкретное взаимодействие между частями вашего приложения.Иметь два тестовых сервера, питающихся друг от друга, эффективно умножает переменные, не давая вам уверенности в том, что любая из сторон работает правильно.

...