如何使用 PascalMock 返回 var 参数



我正在使用PascalMock(http://sourceforge.net/projects/pascalmock/(来模拟DUnit单元测试中的各种接口。

我熟悉如何处理参数和返回值,但不了解如何编写 var 参数。

例如,为了模拟接口版本,如果TIniFile.ReadSection,我已经尝试过:

procedure TIniFileMock.ReadSections(Strings: TStrings);
begin
  AddCall('ReadSections').WithParams([Strings]).ReturnsOutParams([Strings]);
end;

,然后使用以下方法设置期望:

IniMock.Expects('ReadSections').WithParams([Null])
  .ReturnsOutParams([Sections]);

但这并没有返回我放入部分中的值。我已经尝试了各种其他排列,但显然我错过了一些东西。互联网上的例子似乎很少。

使用 PascalMock 返回 var 参数的正确方法是什么?

你似乎误解了TIniFile.ReadSection的工作原理。

此方法的Strings参数不是 var 参数,而只是一个对象引用。

您需要传入对 TStrings 派生对象(通常是 TStringList 的实例(的引用。 然后,该方法从 INI 文件中读取节名,并将它们添加到您提供的 TStrings 对象中:

例如:

sections := TStringList.Create;
try
  ini.ReadSections(sections);
  // Do some work with the 'sections'
  // ..
finally
  sections.Free;
end;

有了这个澄清,我怀疑你需要改变你嘲笑INI文件的方法,当然还有你的期望,这是完全错误的。 如果您使用 NIL 参数调用 ReadSection,它要么因访问冲突而失败,要么干脆什么都不做(我怀疑是前者(。

最新更新