Die Test
Unit
Delphi-Quellcode:
unit unitTest;
interface
uses
DUnitX.TestFramework,
Delphi.Mocks,
System.Rtti,
uTest;
type
[TestFixture]
TTestRechner =
class(TObject)
private
FTestObjekt: TTestObjekt;
public
[Setup]
procedure Setup;
//TestObjekt erzeugen
[TearDown]
procedure TearDown;
//Testobjekt freigeben
[Test]
procedure Test;
end;
implementation
//***
procedure TTestRechner.Test;
var
tempLogger : TMock<ITest>;
lValue : TValue;
lVariant: Variant;
begin
lValue := 0;
tempLogger := TMock<ITest>.Create;
tempLogger.Setup.Expect.Once.When.test2('
bla');
tempLogger.Setup.Expect.Once.When.test3(lValue);
FTestObjekt.uebergebeWerteAnMock(tempLogger);
tempLogger.VerifyAll;
end;
initialization
TDUnitX.RegisterTestFixture(TTestRechner);
end.
Die zu testende
Unit
Delphi-Quellcode:
unit uTest;
interface
uses System.rtti;
type
{$M+}
ITest =
interface
procedure test2(aName:
String);
procedure test3(aValue: TValue);
end;
TTestObjekt =
class(TObject)
public
procedure uebergebeWerteAnMock(aTest: ITest);
end;
implementation
procedure TTestObjekt.uebergebeWerteAnMock(aTest: ITest);
var
lValue: TValue;
begin
lValue := 0;
aTest.test2('
bla');
aTest.test3(lValue);
end;
end.
Es knallt mit ner Zugriffsverletzung, wenn die Funktion des Interfaces test3 mit TValue aufgerufen wird.