Как сделать макет TWebRequest / TIdHTTPAppRequest?

У меня есть функция, которая принимает TWebRequestаргумент, например:

function foo(const request: TWebRequest ): boolean;

как я могу создать TWebRequestи установить какое-то свойство, например:

  • хозяин
  • Порт сервера
  • QueryFields
  • ContentFields

Я пытался:

var
  aWebRequest: TWebRequest;
begin
  aWebRequest := TWebRequest.Create;

но при создании Delphi возникает исключение:

Первое случайное исключение в $ XXXXXXXX. Класс исключения TIdHTTPAppRequest с сообщением «Абстрактная ошибка».

потомок есть , но для этого требуется:constructor TIdHTTPAppRequest.Create( AThread: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo );

EAbstractError

для каждого аргумента требуется другой объект и т. д.

есть простой способ (например, сторонний блок, неизвестный фрагмент или трюк) для макета запроса на единичное тестирование?

unit-testing,delphi,indy,dunit,

-1

Ответов: 1


1

EAbstractErrorобычно означает, что вы пытаетесь создать экземпляр абстрактного класса (например TStrings) вместо его потомка, который содержит необходимые реализации (например TStringList). Поэтому вам нужно найти TWebRequestпотомка и использовать его вместо этого.

Для издевательских целей вы можете попытаться написать свой собственный «пустой» потомок, но я сомневаюсь, что он будет работать так, как ожидалось.

модульное тестирование, Дельфы, Инди, DUnit,
Похожие вопросы