質問する
841 次
3 に答える
4
新しい delphi-mock は、関数の参照への WillExecute を使用してこれを行うことができます。
FUsers.Setup.WillExecute('CheckPwd',
// function CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg: String) : Boolean;
function (const args : TArray<TValue>; const ReturnType : TRttiType) : TValue
var
aErrorCode: Integer;
aErrorMsg: String;
aResult: Boolean
begin
// check against 5, as arg[0] is tkInterface and the method parameters start with arg[1]
Assert.AreEqual(5, Length(args), 'wrong number of arguments passed to IDlUsers.CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg:String) : Boolean');
Assert.IsTrue(args[1].IsType<integer>, 'wrong argument 1 type passed to IDlUsers.CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg:String) : Boolean');
Assert.IsTrue(args[2].IsType<string>, 'wrong argument 2 type passed to IDlUsers.CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg:String) : Boolean');
Assert.IsTrue(args[3].IsType<Integer>, 'wrong argument 3 type passed to IDlUsers.CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg:String) : Boolean');
Assert.IsTrue(args[4].IsType<string>, 'wrong argument 4 type passed to IDlUsers.CheckPwd(UserId: integer; Pwd: string; out ErrorCode: Integer; out ErrorMsg:String) : Boolean');
// ...
arg[3] := TValue.From<Integer>(aErrorCode);
arg[4] := TValue.From<string>(aErrorMsg);
Result := TValue.From<Boolean>(aResult);
end);
(私は Delphi XE7 と DUnitX を使用しています)
于 2015-09-07T12:15:22.013 に答える