TList<T>.count return 值模拟 Delphi 模拟

TList<T>.count return value mocking with Delphi Mocks

在我的单元测试中,需要设置一个模拟 TList<T>。如何为模拟的 TList<T>.count 属性 读取设置 return 值?

当我在 When 之后使用 count 时,编译器错误消息是:

[dcc32 Error] Unit1.pas(40): E2014 Statement expected, but expression of type 'Integer' found

当我在 When 之后使用 getCount 时,编译器错误消息是:

[dcc32 Error] Unit1.pas(40): E2003 Undeclared identifier: 'getCount'

count属性直接读取fCount属性。有什么解决办法吗?

type
  TMyClass = class
  end;

procedure TXXXTestCase.testYYY;
var
  mL : TMock<TList<TMyClass>>;
begin
  mL := TMock<TList<TMyClass>>.create;
  try
    // ...
    mL.Setup.WillReturn( 1 ).When.Count;
    // ...
  finally
    mL.Free;
  end;
end;

好的。受 Stefan Glienke 评论的启发,我创建了一个实用程序类,以避免访问模拟对象的 属性 of ... 的一个属性。我只是将模拟传递给实用程序 class 的模拟以获取(假)值。

一个代码片段看起来像我原来的:

value = object1.property.list.count;

这种深入观察的解决方案:

value = object1Utility.getListCount( object );

TObjec1tUtility 调用 Object2Utility 对其进行响应,但在这种情况下我可以模拟 Object1Utility,无需将模拟添加到模拟中。