2

我真的很喜欢 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 模拟类助手?

4

0 回答 0