0

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

当我使用countWhen编译器错误信息是:

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

当我使用getCountWhen编译器错误信息是:

[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;
4

1 回答 1

0

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

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

value = object1.property.list.count;

这种深层外观的解决方案:

value = object1Utility.getListCount( object );

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

于 2017-03-26T12:39:10.947 回答