gpt4 book ai didi

fitnesse - 在 Fitnesse RowFixture 中格式化数据

转载 作者:行者123 更新时间:2023-12-04 12:38:42 26 4
gpt4 key购买 nike

我有一个返回业务对象列表的 Fitnesse RowFixture。该对象有一个字段,它是一个代表 0 和 1 之间百分比的浮点数。业务对象的使用者将是来自设计者的网页或报告,因此百分比的格式将取决于设计者而不是业务对象。

如果页面可以在将数字转换为百分比时模拟设计器会更好,即显示 50% 而不是显示 0.5。但我宁愿不要用显示代码污染业务对象。有没有办法在 RowFixture 中指定格式字符串?

最佳答案

您当然不想仅仅为了让您的测试看起来更好而修改您的业务逻辑。然而,好消息是,有一种方法可以做到这一点,这并不困难,但不像传递格式说明符那么容易。

尝试将您的 Fit Fixture 视为 FitNesse 和您的应用程序代码之间的服务边界。如果您的 的实现细节,您想定义一个不一定要更改的契约(Contract)。苏特 ( S 系统 U nd T est)更改。

让我们看一下您的业务对象的简化版本:

public class BusinessObject
{
public float Percent { get; private set; }
}

由于 RowFixture 的工作方式,我们需要定义一个简单的对象来作为合约工作。通常我们会使用一个接口(interface),但这并不能满足我们的目的,所以一个简单的 DTO ( D ata T 传输 O bject)就足够了。

像这样的东西:
public class ReturnRowDTO
{
public String Percent { get; set; }
}

现在我们可以定义一个 RowFixture 来返回我们自定义 DTO 对象的列表。我们还需要创建一种将 BusinessObjects 转换为 ReturnRowDTO 的方法。我们最终得到一个看起来像这样的 Fixture。
public class ExampleRowFixture: fit.RowFixture
{
private ISomeService _someService;

public override object[] Query()
{
BusinessObject[] list = _someService.GetBusinessObjects();

return Array.ConvertAll(list, new Converter<BusinessObject, ReturnRowDTO>(ConvertBusinessObjectToDTO));
}

public override Type GetTargetClass()
{
return typeof (ReturnRowDTO);
}

public ReturnRowDTO ConvertBusinessObjectToDTO(BusinessObject businessObject)
{
return new ReturnRowDTO() {Percent = businessObject.Percent.ToString("%")};
}
}

您现在可以在不破坏实际拟合测试的情况下更改您的基础 BusinessObjects。希望这可以帮助。

关于fitnesse - 在 Fitnesse RowFixture 中格式化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/102057/

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