Ich arbeite durch das Coding Delphi Buch, und ich habe Probleme mit Delphi Mocks. Wenn ich das Mock mit dem Attribut [Setup] mit DUnitX erstelle, scheint es, als würde es nie erstellt. Wenn ich das Mock innerhalb des Tests selbst erstelle, funktioniert es richtig. Ich dachte, Setup und TearDown sollten so eingerichtet sein, dass Sie nicht für jeden Test dieselben Elemente erstellen müssen.Delphi Mocks mit DUnitX Setup und TearDown
Unten ist der Code für das Gerät zu testen
unit uDollarToGalleonsConverterTest;
interface
uses
uDollarToGalleonsConverter,
Spring.Services.Logging,
Delphi.Mocks,
DUnitX.TestFramework;
type
[TestFixture]
TDollarToGalleonConverterTest = class
private
Expected, Actual: Double;
Converter: TDollarsToGalleonsConverter;
Logger: ILogger;
[Setup]
procedure Setup;
[TearDown]
procedure TearDown;
public
[Test]
procedure TestPointFiveCutsDollarsInHalf;
end;
implementation
{ TDollarToGalleonConverterTest }
procedure TDollarToGalleonConverterTest.Setup;
begin
Logger := TMock<ILogger>.Create;
Converter := TDollarsToGalleonsConverter.Create(Logger);
end;
procedure TDollarToGalleonConverterTest.TearDown;
begin
Converter.Free;
end;
procedure TDollarToGalleonConverterTest.TestPointFiveCutsDollarsInHalf;
begin
Expected := 1.0;
Actual := Converter.ConvertDollarsToGalleons(2, 0.5);
Assert.AreEqual(Expected, Actual,
'Converter failed to convert 2 dollars to 1 galleon');
end;
initialization
TDUnitX.RegisterTestFixture(TDollarToGalleonConverterTest);
end.
Wenn es einen Fehler in meinem Buch gibt, würde ich gerne darüber auf [email protected] wissen. –
Ich glaube nicht, dass es ein Fehler in Ihrem Buch ist, eher ein Missverständnis meinerseits. Ich versuche, einen Schein in der Setup-Prozedur des DUnitX-Tests zu erstellen. Es funktioniert gut, wenn ich das Mock innerhalb des Tests selbst, wie Sie in dem Buch, erstellen, aber wenn ich versuche, die Erstellung im Setup zu tun, dann löst es Ausnahmen aus, weil das Mock nie erstellt wird. – TheEndIsNear