首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Delphi-Mocks框架在Delphi的子类中使用mocks

如何使用Delphi-Mocks框架在Delphi的子类中使用mocks
EN

Stack Overflow用户
提问于 2012-05-08 08:02:43
回答 1查看 854关注 0票数 4

好了,我一直在使用优秀的Delphi-Mocks Framework,我刚刚遇到了一个问题。假设我有以下接口:

代码语言:javascript
复制
IDepartment = Interface
   ['{F4915950-8F32-4944-A3B6-8E08F6C38ECC}']
   function getID() : Integer;
   function getName() : String;
   property ID: Integer read getID;
   property Name: String read getName; 
end;

ISale = Interface
   ['{F4915950-8F32-4944-A3B6-8E08F6C38E77}']
   function getAmmount() : Currency;
   function getDepartment() : IDepartment;
   property Ammount: Currency read getAmmount;
   property Department : IDepartment getDepartment;
end;

现在,我尝试使用DUnit和Delphi-Mocks测试Sale接口,并按如下方式使用它:

代码语言:javascript
复制
procedure TMyTest.Test_Sale_HasDepartment;
var
   mckDepartment : TMock<IDeparment>;
   mckSale : TMock<ISale>;
begin
   mckDepartment := TMock<IDepartment>.Create;
   mckDepartment.Setup.WillReturn('My Department').When.Name;
   mckDepartment.Setup.WillReturn(1).When.ID;

   // Create a sale Mock
   mckSale := TMock<ISale>.Create;
   mckSale.Setup.WillReturn(100).When.Ammount;
   //** Here´s there is where I don´t know how to add a "child mock"** 
   mckSale.Setup.WillReturn(TValue.From<IDepartment>(mckDepartment)).When.Department;

  // What I am trying to get is the following:
  WriteLn(mckSale.Instance.Department.Name); // Should return "My Department" but fails with an AV. 
end;

所以我的问题是:如何将子模拟添加到现有的模拟接口并调用其方法和属性?

谢谢!附注:我使用的是Delphi XE2。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 10:35:07

mckSale.Setup.WillReturnDefault('getDepartment',TValue.From(mckDepartment));

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10490776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档