2012-05-08 9 views
4

いいえ、私は優れたDelphi-Mocks Frameworkを使用していましたが、問題が発生しました。次のように私はDUnitのとDelphi-モックを使用して販売インタフェースをテストし、それを使用しようとしています、今Delphi-Mockフレームワークを使用してDelphiの子クラスでmockを使用する方法

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; 

:Let'sは、私は次のインタフェースを持っていると仮定し

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; 

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

ありがとうございます! P.P.私はDelphi XE2を使用しています。

答えて

3

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

+1

ありがとうランディー、それは働いた。また、次のコードで動作します: 'mckSale.Setup.WillReturn(TValue.From (mckDepartment)).Departament;' –

関連する問題