我目前在入門單元測試和嘲諷良好的過程,我絆倒了以下的方法,我似乎無法制造一個工作模擬實現:如何在PascalMock中使用開放數組參數來模擬方法?
function GetInstance(const AIID: TGUID;
out AInstance;
const AArgs: array of const;
const AContextID: TImplContextID = CID_DEFAULT): Boolean;
(TImplContextID
僅僅是整數類型別名)
這是多遠我得到:
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
-parameter AInstance
一個更簡單的方式是使用@
-notation爲TGUID
-typed參數(本質上是一個紀錄,即值類型),以正確的方式去?
是否有可能用當前版本的PascalMock嘲笑這種方法呢?
更新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不知道這是否會產生所需的行爲。 – 2010-05-20 16:42:09