我正在执行单元测试的类滚动数据库表的每条记录,并将字段中的值与前一个值相加。以下是简化为骨骼的类:
procedure TSumList.Sum;
var
FSum:integer;
begin
FSum:=0;
FDB.First;
while not FDB.EOF do
begin
FSum:=FSum+FDB.GetAmount;
FDB.Next;
end;
end;
FDB 指的是名为 IIDBTable 的 DB 模拟接口。
以下是依赖注入的数据库模拟:
IIDBTable = interface
['{A299D1D6-93AF-45CC-8DE2-9A4EE188C352}']
procedure First;
procedure Next;
function EOF : boolean;
function GetAmount:integer;
end;
TMockDBTable = class (TInterfacedObject,IDBTable)
procedure First;
procedure Next;
function EOF : boolean;
function GetAmount:integer;
end;
问题是我不知道如何为模拟提供数据以进行测试。当然,我可以添加一个额外的过程,比如 AddValues(aAmount:integer),它可以完成这项工作,但在这种情况下,我最终也会在生产中使用这个额外的过程,我不需要它。
对此的最佳做法是什么?
我使用 Spring for Delphi 框架