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,无需将模拟添加到模拟中。
在我的单元测试中,需要设置一个模拟 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,无需将模拟添加到模拟中。