Как я могу проверить асинхронный код с DUnitX? - PullRequest
0 голосов
/ 27 апреля 2020

Это очень прямо в вопросе: как мне проверить мою программу (которая использует TTask) с DUnitX?


У меня есть код, который выглядит так:

var 
  FReq: IRequest;
begin
  FReq := TGetRequest.Create('127.0.0.1', '80540');
  FReq := TGetRequest.ExecuteAsync(
    procedure
    begin
      ShowMessage('success');
    end,
    procedure(const Err: String)
    begin
      ShowMessage(Err);
    end
  );

В основном метод ExecuteAsync внутренне выполняет TTask.Run(...), который выполняет операции HTTP. Когда HTTP-клиент (TIdHTTP) завершен, обратные вызовы запускаются следующим образом:

TThread.Queue(nil, procedure begin SuccessCallback; end);

Или в случае исключений:

TThread.Queue(nil, procedure begin ErrorCallback('Something went wrong'); end);

Как я могу сказать DUnitX ждать асинхронного c запросы?

Примечание : Обратные вызовы ничего не возвращают, они все процедуры. Есть ли способ?

...