Delphi接口
晚上好 我试图使用dUnit和PascalMock对我的一些Delphi代码进行单元测试 有大量的遗留代码根本没有接口,它们也包含传入自身对象的参数,例如:Delphi接口,delphi,interface,Delphi,Interface,晚上好 我试图使用dUnit和PascalMock对我的一些Delphi代码进行单元测试 有大量的遗留代码根本没有接口,它们也包含传入自身对象的参数,例如: TSelf = Class Function Hello(self: TSelf); end; 然后,我尝试将接口应用于TSelf: ISelf = Interface(IInterface) Function Hello(self: TSelf) end; TSelf = Class(TInterfacedObject, IS
TSelf = Class
Function Hello(self: TSelf);
end;
然后,我尝试将接口应用于TSelf:
ISelf = Interface(IInterface)
Function Hello(self: TSelf)
end;
TSelf = Class(TInterfacedObject, ISelf)
Function Hello(self: TSelf);
end;
这显然是失败的,因为“TSelf”是未定义的,这些是具有许多函数的大型对象,使用TSelf作为参数,这是我唯一的选择,并将其更改为TObject吗?然后在方法中把它们扔给自己
在这方面的任何帮助都将不胜感激,因为它目前阻止我能够自动测试
或者,是否有一个不需要接口的模拟框架
谢谢。您可以使用转发类声明
type
TSelf = class;
ISelf = Interface
procedure Hello(ASelf: TSelf);
end;
TSelf = Class(TInterfacedObject, ISelf)
procedure Hello(ASelf: TSelf);
end;
但在这种情况下,必须在同一类型声明部分中定义fullTSelf
类声明
作为旁注,使用
self
作为参数名是令人困惑的,并且该代码无法编译,以及没有结果类型的函数。这很有效,非常感谢。我给出的代码示例只是我头脑中的一个粗略示例,试图给出我试图实现的目标,但是,您的评论是正确的,我将在以后提出的任何问题中考虑它们。再次感谢!