2008-11-16 88 views

回答

20

Woaw,我是PascalMock项目负责人,它是我第一次听到关于德尔福模拟精灵! PascalMock非常不错。

顺便说一句,你也有一些规模较小的模拟框架:

也许还有周围的一些其他的?

另外PascalMock是开源的,贡献或改进的想法是受欢迎的。

PS:从CVS最新PascalMock版本加入更多功能的1.1版本,如:在运行时

  • 自动模拟生成使用RTTI
  • 接口允许预期的方法调用任何顺序
  • 预期的方法
11

虽然它是稳定的至少x个电话,PascalMock尚未在工作多年的。

有一个新的模拟库叫Delphi Mocks。它只适用于Delphi XE2或更新版本。

2

德尔福模拟向导只生成Pascal模拟向导。它们不是竞争性的实现。

7

尝试Dsharp。这就像Delphi Mocks,但没有内存泄漏。

恕我直言,DSHARP比较好,虽然我最初对Delphi Mocks很兴奋。

5

我们的开源mORMot framework现在能够在其不稳定的版本,以存根模拟任何Delphi接口。

像往常一样,解释库的功能的最好方法是使用它来查看代码。下面是一个例子(类似于一个附带RhinoMocks)核实,当我们执行“忘记密码”的情况的,大家才想起打电话Save()方法正确:

procedure TMyTest.ForgotMyPassword; 
var SmsSender: ISmsSender; 
    UserRepository: IUserRepository; 
begin 
    TInterfaceStub.Create(TypeInfo(ISmsSender),SmsSender). 
    Returns('Send',[true]); 
    TInterfaceMock.Create(TypeInfo(IUserRepository),UserRepository,self). 
    ExpectsCount('Save',qoEqualTo,1); 
    with TLoginController.Create(UserRepository,SmsSender) do 
    try 
    ForgotMyPassword('toto'); 
    finally 
    Free; 
    end; 
end; 

和...就是这样,因为当IUserRepository实例将被释放时将进行验证。

可用功能(有些是唯一的,相较于其他的Delphi嘲笑框架):

  • 清除distinction between stubs and mocks,与our Unit Testing classes集成;
  • 处理varout参数作为返回值,除了函数结果;
  • 通过流畅的接口或委托/回调来存取定义;
  • 根据您的测试期望,通过“expect-run-verify”和/或“run-verify”(又名“测试间谍”)模式进行模拟,
  • 集成方法调用跟踪;
  • 开源,从Delphi 6开始工作到XE3;
  • 重量轻,速度快(不要依赖于慢速的TVirtualInterface)。

见相关博客文章:

相关问题