단위 테스트에서 조롱 된 TList<T>
을 설정할 필요가 있습니다. 조롱 된 TList<T>.count
속성에 대한 반환 값을 설정하려면 어떻게해야합니까? 내가 When
후 count
를 사용하는 경우TList <T> 델타 모의로 계산 된 반환 값 mocking
컴파일러 오류 메시지는 다음과 같습니다
[dcc32 Error] Unit1.pas(40): E2014 Statement expected, but expression of type 'Integer' found
내가 When
컴파일러 오류 메시지가 후 getCount
를 사용하면된다
[dcc32 Error] Unit1.pas(40): E2003 Undeclared identifier: 'getCount'
count
속성은 직접 fCount
의 속성을 읽어 들여, . 어떤 해결책이 있습니까?
type
TMyClass = class
end;
procedure TXXXTestCase.testYYY;
var
mL : TMock<TList<TMyClass>>;
begin
mL := TMock<TList<TMyClass>>.create;
try
// ...
mL.Setup.WillReturn(1).When.Count;
// ...
finally
mL.Free;
end;
end;
낮은 수준의 후킹을 사용하지 않는 한, 'Count'값을 조롱하는 유일한 방법은 더미 값을 목록에 추가하는 것입니다. 'When'에 관해서는, Mock은 가상 getter 메소드를 사용하는 속성 읽기 만 처리 할 수 있습니다 (그래서 메소드를 연결할 수 있습니다). 게다가, MyList.Count;와 같은 명령문은 델파이에서 유효하지 않습니다 (같은 컴파일러 오류). Mocks와 호환되는 다른 클래스/메소드에서'Count' 체크를 래핑해야합니다. –
예 제 생각은 같습니다 : 상속 된 TList를 getCount 가상 메서드로 사용하거나 함수 getListCount (aL_ : TList)를 만드는 것 : integer begin aL_.count; 종료; 메소드를 호출합니다. 모두 해킹하고 있습니다. 코드를 리팩터링하여 테스트 할 수 있습니다. 그러나 올바른 방향으로는 아닙니다. : –
목록을 조롱하는 것은 좋지 않은 생각입니다. 포함하려는 값을 넣으십시오. –