создание фиктивной настройки для IAsyncEnumerable в C# с использованием moq
Я пытаюсь протестировать метод QueryAllScheduledJob. Он содержит вызов GetScheduledJobs, который возвращает коллекцию IAsyncEnumerable. Я создал настройку для GetScheduledJobs. Я получаю исключение типа "нулевой экземпляр" для GetScheduledJobs. В моей настройке я попытался использовать Task.Result для возврата, он дает ошибку времени компиляции.
класс реализации
public async IAsyncEnumerable<ScheduledJobModel> QueryAllScheduledJob()
{
var enumerator = ScheduledJobRepository.GetScheduledJobs().GetAsyncEnumerator();
while (await enumerator.MoveNextAsync())
yield return ConvertTypeToModel<ScheduledJobModel, ScheduledJobs>(enumerator.Current);
}
Тестовый класс
[Theory]
[InlineData(5)]
public async void ShouldHaveScheduledJobRecords(int numberOfScheduledJobs)
{
//Arrange
var data = ScheduleJobFixtureHelper.GetXNumberofScheduledJobs(numberOfScheduledJobs);
ScheduledJobRepository.Setup(a => a.GetScheduledJobs()).Returns(data);
////Act
var results = QueueManager.QueryAllScheduledJob();
//Assert
Assert.Equal(numberOfScheduledJobs, await results.CountAsync());
}
public async IAsyncEnumerable<ScheduledJobs> GetXNumberofScheduledJobs(int totalNumberofScheduledJob)
{
IEnumerator<ScheduledJobs> enumerator = AutoFixture.CreateMany<ScheduledJobs>(totalNumberofScheduledJob).GetEnumerator();
while (enumerator.MoveNext())
{
yield return enumerator.Current;
}
}