Я использую XUnit для тестирования своего проекта ASP.NET Core 2.2.
Наряду с этим у меня есть FluentAssertions в тестовом проекте.
Я хочу протестировать мой обработчик MediatR.
Внутри этого обработчика у меня есть вызов API.
Я прочитал статьи, и мне кажется, что сначала мне нужно настроить прибор, но я не нашел код, за которым мне легко следовать.
Мой обработчик выглядит так:
public class GetCatsHandler : IRequestHandler<GetCatsQuery, GetCatsResponse>
{
private readonly IPeopleService _peopleService;
public GetCatsHandler(IPeopleService peopleService)
{
_peopleService = peopleService;
}
public async Task<GetCatsResponse> Handle(GetCatsQuery request, CancellationToken cancellationToken)
{
var apiResponse = await _peopleService.GetPeople();
List<Person> people = apiResponse;
var maleCatsGroup = GetCatsGroup(people, Gender.Male);
var femaleCatsGroup = GetCatsGroup(people, Gender.Female);
var response = new GetCatsResponse()
{
Male = maleCatsGroup,
Female = femaleCatsGroup
};
return response;
}
private static IEnumerable<string> GetCatsGroup(IEnumerable<Person> people, Gender gender)
{
.....
}
}
PeopleService - это класс обслуживания, который имеет HttpClient и вызывает API для получения результата.
Вот мое приспособление:
public class GetCatsHandlerFixture : IDisposable
{
public TestServer TestServer { get; set; }
public HttpClient Client { get; set; }
public GetCatsHandlerFixture()
{
TestServer = new TestServer(
new WebHostBuilder()
.UseStartup<Startup>()
.ConfigureServices(services => {
}));
Client = TestServer.CreateClient();
}
public void Dispose()
{
TestServer.Dispose();
}
}
Отсюда, как я могу передать свои ложные данные для вызовов API в различных сценариях?