Wie der Titel vorschlägt, versuche ich einen Test zu schreiben, um zu überprüfen, dass eine Version einer Methode aufgerufen wird, und dass die überladene Version nicht ist. Da Delphi-Mocks bei der Parameterübereinstimmung Indizierung zu verwenden scheint, sehe ich einen Fehler, und dass die überladene Funktion aufgerufen wird, obwohl sie tatsächlich nicht aktiv ist.Delphi Mocks - Überprüfen Sie, dass eine überladene Methode nie aufgerufen wird
Beispiel Test Schnittstelle
TFoo = class(TObject)
public
function Bar(const a, b, c: string) : string; overload;virtual;
function Bar(const a: string) : string; overload;virtual;
end;
Beispieltestcode
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;
Dank!
Dies ist die Lösung, die ich am Ende verwendet habe. Es war genau das Stück, das ich vermisste. – mwilkinson