Delphi Mocks with class helper

139 Views Asked by At

I really like Delphi Mocks, but it seems to have a problem with class helpers. I have a class helper that extends TRESTResponse and want to test the functions I added. Unfortunately, this does not work. I have created the following simple reproduction:

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;

Mocking MyFunc1 works as expected, but MyFunc2 cannot be mocked. The second LMock.Setup.WillReturn-line raises an exception [MyClass] already defines Will Return When for method [MyFunc1]. If you remove the mocking setup for MyFunc1 then no exception is raised, but MyFunc2 is not mocked.

Any suggestions how to solve this? Or is it not possible to mock class helpers with Delphi Mocks?

0

There are 0 best solutions below