私のユニットテストでは、模擬したTList<T>
をセットアップする必要があります。模倣したTList<T>.count
プロパティの戻り値を設定するにはどうすればよいですか?TList <T>デルファイモックを使用したカウント戻り値
私はWhen
後count
を使用すると、コンパイラのエラーメッセージは次のとおりです。
[dcc32 Error] Unit1.pas(40): E2014 Statement expected, but expression of type 'Integer' found
私はgetCount
を使用する場合When
後のコンパイラエラーメッセージは次のとおりです。
[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は仮想ゲッターメソッドを使うプロパティの読み込みしか処理できないように見えます(メソッドをフックすることができます)。さらに、 'MyList.Count;'のようなステートメントは、とにかく(同じコンパイラエラー)Delphiでは無効です。 'Count'チェックをMock互換の別のクラス/メソッドでラップする必要があります。 –
はい私のアイデアは同じです:getCount仮想メソッドで継承されたTListを使用するか、関数getListCount(aL_:TList)を作成してください:integer begin aL_.count;終わり;メソッドを呼び出します。それらのすべてがハッキングしています。テストできるようにコードをリファクタリングするだけです。しかし、正しい方向ではありません。 : –
リストを嘲笑するのは悪い考えです。あなたがそれに含めることを望む値を入れてください。 –