4

さて、私は優れたDelphi-Mocksフレームワークを使用してきましたが、問題が発生しました。次のインターフェイスがあるとします。

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インターフェースをテストし、次のように使用しようとしています。

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;

だから私の質問は:既存のモックされたインターフェースに子モックを追加し、そのメソッドとプロパティを呼び出すにはどうすればよいですか?

ありがとう!PS私はDelphiXE2を使用しています。

4

1 に答える 1

3

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

于 2012-05-08T02:35:06.500 に答える