2012-05-08 3 views
4

좋아요, 저는 우수한 Delphi-Mocks Framework을 사용하고 있으며 방금 문제가 발생했습니다. 다음과 같이 내가은 DUnit와 델파이 모의 객체를 사용하여 판매 인터페이스를 테스트하고 그것을 사용하려고 지금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; 

을 그래서 내 질문 : 어떻게 기존의 조롱 된 인터페이스에 하위 모의 객체를 추가하고 메소드 및 속성을 호출 할 수 있습니까?

감사합니다. 오후 8시 30 분 P.S. 델파이 XE2를 사용하고 있습니다.

답변

3

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

+1

감사합니다. Randy에게 감사드립니다. 또한 다음 코드로 작업했습니다 :'mckSale.Setup.WillReturn (TValue.From (mckDepartment)) .Departament;' –