gpt4 book ai didi

使用 DUnitX 设置和拆卸的 Delphi 模拟

转载 作者:行者123 更新时间:2023-12-03 14:59:56 24 4
gpt4 key购买 nike

我正在阅读《Coding Delphi》一书,但在使用 Delphi Mocks 时遇到了麻烦。当我使用 DUnitX 的 [Setup] 属性创建模拟时,它看起来好像永远不会被创建。当我在测试本身中创建模拟时,它可以正常工作。我认为设置和拆卸的目的是让您不必为每个测试构建相同的项目。

下面是单元测试的代码

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.

最佳答案

默认情况下,为公共(public)和已发布的方法生成方法的 rtti。如果您有任何私有(private)或 protected 方法,即使它们具有属性,框架也不会找到它们。

所以你的安装方法永远不会被调用。

关于使用 DUnitX 设置和拆卸的 Delphi 模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22637313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com