Я хочу настроить HttpTest для имитации тестов с медленным откликом; например, подождите X секунд, прежде чем ответить настроенным RespondWith*
ответом. Какие-либо предложения?
Как имитировать более длительное время отклика (а не тайм-аут) с помощью HttpTest (flurl)
comment
пояснение - я пишу модульные тесты с помощью flurl - HttpTest. Я вижу примеры того, как настраивать фиктивные ответы; и тайм-аут. Я хочу смоделировать медленный отклик, как будто я все еще хочу получить 200 после ожидания 2 секунд или около того.
- person reaz   schedule 28.08.2020
Ответы (1)
Это напрямую не поддерживается. Модульные тесты должны быть быстрыми (SimulateTimeout
выдает FlurlHttpTimeoutException
сразу, а не делает паузу), но я думаю, я мог бы увидеть, что это полезно в каком-то интеграционном тесте.
Есть один способ сделать это. Есть низкоуровневая перегрузка RespondWith
, которая требует функции компоновщика. Вы можете добавить здесь паузу, хотя она не поддерживает асинхронность, поэтому я бы предложил Thread.Sleep
вместо Task.Delay
. (Не идеально, но, честно говоря, он не был разработан с учетом этого варианта использования.)
Что-то вроде этого в вашей настройке должно сделать это:
httpTest.RespondWith(() => {
// pause for 1 second
Thread.Sleep(1000);
return new StringContent("ok");
});
person
Todd Menier
schedule
05.09.2020
Спасибо. это должно работать; и ваш комментарий о каком-то особом сценарии типа интеграции - это именно то, для чего он будет использоваться
- person reaz; 07.09.2020
мои извинения - кажется, я заговорил слишком рано; Я не вижу перегрузки
RespondWith
, которая требует Func<>
. Я использую flurl.http \ 2.4.2. Что мне не хватает?
- person reaz; 09.09.2020
Извините, пропустил ваш последний комментарий. Это версия 3.0, которая находится на стадии предварительного выпуска, но стабильна. Конкретное улучшение упоминается здесь.
- person Todd Menier; 30.09.2020