我正在阅读Coding Delphi一书,并且在使用Delphi Mocks时遇到了麻烦.当我使用DUnitX的[Setup]属性创建模拟时,它似乎永远不会被创建.当我在测试中创建Mock时,它可以正常工作.我认为安装和TearDown的重点在于您不必为每个测试构建相同的项目.
以下是单元测试的代码
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.
Run Code Online (Sandbox Code Playgroud)