У меня есть следующий метод:
public async Task ScrapeObjects(int page)
{
try
{
while (!isObjectSearchCompleted)
{
UriBuilder builder = new UriBuilder(_apiSettings.Value.FundaUrl)
{
Query = $"test"
};
var result = await _apiCaller.GetResponseAsync<ResponseModel>(builder.Uri).ConfigureAwait(false);
Thread.Sleep(TimeSpan.FromSeconds(1));
if (result != null)
{
foreach (var obj in result.Objects)
{
UpdateDictionary(propertiesAmount, obj.name);
}
}
if (!fundaResult.Objects.Any())
{
isObjectSearchCompleted = true;
}
else
{
page++;
}
}
}
catch (HttpRequestException ex)
{
if (ex.Message == "Request limit exceeded.")
{
Thread.Sleep(TimeSpan.FromSeconds(60));
ScrapeObjects(page);
}
Log.Fatal(ex, ex.Message);
}
}
Я пытаюсь протестировать его. Однако это длительный процесс. У меня есть контроль над _apiCaller , так как я над ним издеваюсь. Я пытаюсь протестировать следующие 2 сценария ios:
1) _apiCaller возвращает правильный результат в первый раз. Мой словарь обновляется через UpdateDictionary . Вместо этого второй вызов не возвращает результата, и, следовательно, весь метод достигает своего конца. Цель моего теста - убедиться, что мой словарь обновлен.
или
2) _apiCaller возвращает правильный результат в первый раз. Мой словарь обновляется через UpdateDictionary . Второй вызов вместо этого выдает исключение, и мой метод завершается. Цель моего теста - убедиться, что мой словарь обновлен.
В обоих случаях мне нужно изменить поведение моего метода (моего поддельного _apiCaller ) на лету или в по крайней мере после первого раза это называется. Как мне этого добиться? Заранее спасибо!