Уменьшение дублирования кода за счёт создания специального класса WebApplicationFactory¶
Рассмотрим, как вынести логику переопределения зависимостей в специальный класс для повторного использования.
public class CustomWebApplicationFactory: WebApplicationFactory<Startup>
{
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.ConfigureTestServices(services =>
{
services.RemoveAll<ICurrencyConverter>();
services.AddSingleton
<ICurrencyConverter, StubCurrencyConverter>();
});
}
}
В этом примере мы переопределяем метод
ConfigureWebHost для настройки тестовых сервисов1.Вот как применить полученную фабрику.
public class IntegrationTests: IClassFixture<CustomWebApplicationFactory>
{
private readonly CustomWebApplicationFactory _fixture;
public IntegrationTests(CustomWebApplicationFactory fixture)
{
_fixture = fixture;
}
[Fact]
public async Task ConvertReturnsExpectedValue()
{
var client = _fixture.CreateClient();
var response = await client.GetAsync("/api/currency");
response.EnsureSuccessStatusCode();
var content = await response.Content.ReadAsStringAsync();
Assert.Equal("3", content);
}
}
При этом метод
WithWebHostBuilder() остается доступным, что позволяет использовать его для точечных переопределений в конкретном тесте.
Последнее обновление :
25 ноября 2022 г.
Дата создания : 25 ноября 2022 г.
Дата создания : 25 ноября 2022 г.