在我的单元测试中,需要设置一个模拟的TList<T>
。如何为已模拟的TList<T>.count
属性读取设置返回值?
当我在count
之后使用When
时,编译器错误消息是:
[dcc32 Error] Unit1.pas(40): E2014 Statement expected, but expression of type 'Integer' found
当我在getCount
之后使用When
时,编译器错误消息是:
[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;
答案 0 :(得分:0)
行。受Stefan Glinke评论的启发,我创建了一个实用程序calss,以避免访问被模拟对象的属性的属性。我只是将模拟传递给实用程序类的模拟器来获取(伪)值。
代码snipet看起来像我的原始代码:
value = object1.property.list.count;
这种内心深处的解决方案:
value = object1Utility.getListCount( object );
TObjec1tUtility将Object2Utility调用到它的响应,但在这种情况下我可以模拟Object1Utility,不需要在模拟中添加模拟。