我真的很喜欢 Delphi Mocks,但它似乎对类助手有问题。我有一个扩展 TRESTResponse 的类助手,并想测试我添加的函数。不幸的是,这不起作用。我创建了以下简单的复制:
MyClass = class
function MyFunc1: Integer; virtual;
end;
MyClassHelper = class helper for MyClass
function MyFunc2: Integer; virtual;
end;
var
LMock: TMock<MyClass>;
begin
LMock := TMock<MyClass>.Create;
LMock.Setup.WillReturn(2).When.MyFunc1;
LMock.Setup.WillReturn(2).When.MyFunc2;
Assert(LMock.Instance.MyFunc1 <> 1);
Assert(LMock.Instance.MyFunc2 <> 1);
end;
function MyClass.MyFunc1: Integer;
begin
Result := 1;
end;
function MyClassHelper.MyFunc2: Integer;
begin
Result := 1;
end;
模拟 MyFunc1 按预期工作,但无法模拟 MyFunc2。第二个 LMock.Setup.WillReturn-line 引发异常[MyClass] already defines Will Return When for method [MyFunc1]
。如果您删除模拟设置,MyFunc1
则不会引发异常,但MyFunc2
不会被模拟。
任何建议如何解决这个问题?还是不能用 Delphi Mocks 模拟类助手?