Я в настоящее время в процессе начала работы с модульным тестированием и насмешливым навсегда, и я наткнулся на следующий метод, который я не могу показаться, чтобы изготовить рабочую макет реализации:Как мне высмеять метод с открытым параметром массива в PascalMock?
function GetInstance(const AIID: TGUID;
out AInstance;
const AArgs: array of const;
const AContextID: TImplContextID = CID_DEFAULT): Boolean;
(TImplContextID
это просто псевдоним типа для Integer)
Это как далеко я получил:
function TImplementationProviderMock.GetInstance(
const AIID: TGUID;
out AInstance;
const AArgs: array of const;
const AContextID: TImplContextID): Boolean;
var
lCall: TMockMethod;
begin
lCall := AddCall('GetInstance').WithParams([@AIID, AContextID]);
Pointer(AInstance) := FindVarData(lCall.OutParams[0]).VPointer;
Result := lCall.ReturnValue;
end;
Но я не мог понять, как я предположительно, чтобы высмеять параметр открытого массива AArgs
. Есть идеи?
Кроме того, там может быть более простой способ, чтобы вернуть out
параметрическое AInstance
и использует @
-notation для TGUID
-typed параметра (по существу записи, т.е. тип значения) правильный путь?
Возможно ли издеваться над этим методом с текущей версией PascalMock?
Update 2: Я теперь вырубить текст вопроса для ясности. Первоначально он содержал следующее ошибочное выполнение фиктивного метода, который был, что ответ Мейсона относится к: «Неверный тип аргумента в переменной типа конструктора массива»
function TImplementationProviderMock.GetInstance(
const AIID: TGUID;
out AInstance;
const AArgs: array of const;
const AContextID: TImplContextID): Boolean;
begin
Result := AddCall('GetInstance')
.WithParams([@AIID, AContextID])
.ReturnsOutParams([AInstance])
.ReturnValue;
end;
В этом компилятор жаловался на .ReturnsOutParams([AInstance])
говоря.
Вы можете получить его для компиляции, если вы добавите AArgs с @AArgs, но так как я не использую PascalMock Не уверен, что это приведет к желаемому поведению. –