【问题标题】:Formatting data in a Fitnesse RowFixture在 Fitnesse RowFixture 中格式化数据
【发布时间】:2010-09-11 06:01:39
【问题描述】:

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

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

【问题讨论】:

    标签: fitnesse


    【解决方案1】:

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

    尝试将您的 Fit Fixture 视为 FitNesse 和您的应用程序代码之间的服务边界。如果您的 SUTS系统 Under Test) 变化。

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

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

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

    类似这样的:

    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。希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我不确定“污染”是什么。要么要求您的业务对象返回一个以百分比表示的值,在这种情况下,您的业务对象应该提供该值 - 或者 - 您正在测试响应的真实值作为您现在拥有的浮点数。

      试图让 Fitnesse 调整可读性的价值似乎有点奇怪。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-16
        • 1970-01-01
        • 2023-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-03
        相关资源
        最近更新 更多