私は現在、単体テストとモックを完全に開始する過程にあり、次の方法に出くわしましたが、次の方法で動作するモック実装を作成できないようです。
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を返す簡単な方法があり、-typedパラメーター(基本的にはレコード、つまり値型)に-notationを使用するのが正しい方法ですかAInstance
?@
TGUID
現在のバージョンの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])
「変数型配列コンストラクタの引数型が正しくありません」と文句を言いました。