Einzelnen Beitrag anzeigen

TimWu

Registriert seit: 27. Okt 2016
16 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Delphi-Mocks | Fehler bei Verwendung von TValue

  Alt 28. Okt 2016, 10:04
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.

Geändert von TimWu (28. Okt 2016 um 10:11 Uhr)
  Mit Zitat antworten Zitat