タイトルが示すように、メソッドの 1 つのバージョンが呼び出され、オーバーロードされたバージョンが呼び出されないことを確認するテストを作成しようとしています。Delphi-Mocks はパラメータ マッチングでインデックスを使用しているように見えるため、エラーが表示され、オーバーロードされた関数が実際には呼び出されていません。
サンプル テスト インターフェイス
TFoo = class(TObject)
public
function Bar(const a, b, c: string) : string; overload;virtual;
function Bar(const a: string) : string; overload;virtual;
end;
サンプル テスト コード
procedure TestClass.Test
var mock : TMock<TFoo>;
bar : TBar;
begin
mock := TMock<TFoo>.Create;
bar := TBar.Create(mock);
mock.Setup.Expect.Once.When.Bar('1','2','3');
mock.Setup.Expect.Never.When.Bar(It(0).IsAny<string>());
//Will Wind up down an if-branch calling either bar(1) or bar(3)
bar.Execute;
mock.VerifyAll;
end;
ありがとう!