Пересчет возвращаемого значения TList<T>.count с Delphi Mocks
В моем модульном тесте есть необходимость настроить макет TList<T>
, Как я могу установить возвращаемое значение для издевательства TList<T>.count
свойство читать?
Когда я использую count
после When
сообщение об ошибке компилятора:
[dcc32 Error] Unit1.pas(40): E2014 Statement expected, but expression of type 'Integer' found
Когда я использую getCount
после When
сообщение об ошибке компилятора:
[dcc32 Error] Unit1.pas(40): E2003 Undeclared identifier: 'getCount'
count
свойство читает непосредственно fCount
приписывать. Есть ли решение?
type
TMyClass = class
end;
procedure TXXXTestCase.testYYY;
var
mL : TMock<TList<TMyClass>>;
begin
mL := TMock<TList<TMyClass>>.create;
try
// ...
mL.Setup.WillReturn( 1 ).When.Count;
// ...
finally
mL.Free;
end;
end;
1 ответ
ХОРОШО. Вдохновленный комментарием Стефана Глинке, я создал утилиту calss, чтобы избежать доступа к свойствам... объекта, который был подвергнут мошенничеству. Я просто передаю макет в макет служебного класса, чтобы получить (поддельное) значение.
Фрагмент кода выглядит как мой оригинальный:
value = object1.property.list.count;
Решение для этого глубокого внутреннего взгляда:
value = object1Utility.getListCount( object );
TObjec1tUtility вызывает Object2Utility для своего ответа, но в этом случае я могу смоделировать Object1Utility, нет необходимости добавлять макет в макет.