格式化 Fitnesse RowFixture 中的数据

2024-04-12

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

如果页面能够模拟设计者将数字转换为百分比,即不显示 0.5,而是显示 50%,那就更好了。但我不想用显示代码污染业务对象。有没有办法在 RowFixture 中指定格式字符串?


您当然不想仅仅为了使测试看起来更好而修改业务逻辑。不过,好消息是,有一种方法可以完成此任务,该方法并不困难,但不像传递格式说明符那么容易。

尝试将您的 Fit Fixture 视为 FitNesse 和您的应用程序代码之间的服务边界。您想要定义一个合同,如果您的实施细节不一定需要更改SUT (System Under Test)改变。

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

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

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

像这样的东西:

public class ReturnRowDTO
{
    public String Percent { get; set; }
}

现在我们可以定义一个 RowFixture,它将返回我们的自定义 DTO 对象的列表。我们还需要创建一种将 BusinessObject 转换为 ReturnRowDTO 的方法。我们最终得到了一个看起来像这样的夹具。

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,而不会破坏实际的适合度测试。希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

格式化 Fitnesse RowFixture 中的数据 的相关文章

  • Bonjour 通过蓝牙无需 Gamekit ?

    我想知道在 iPhone OS 3 0 或更高版本中直接通过蓝牙使用 bonjour 而不使用 GameKit 的可能性 谁能提供任何例子吗 只需宣布服务 就像tc 下面已经说了 https stackoverflow com q 3845
  • Xamarin Forms Entry 调用 Completed 事件

    我目前正在 Xamarin Forms 中开发登录和注册页面 将键盘的完成按钮更改为下一个并继续最后一个按钮后 我不再在 Android 上收到 Completed 事件 在 iOS 上工作正常 在自定义渲染器中 我可以捕获 Control
  • 在 mac os x Sierra 上使用 opencv c++ 编译 hello world

    第一次我无法编译 hello world 我已经遵循了大量如何安装 opencv 的教程 我只有以下示例 include
  • 为以 exec 启动的进程设置自定义工作目录

    我正在打电话execv在我的 C 代码中启动可执行文件 但我想将其工作目录设置为自定义目录 例如 在一种情况下 我正在启动ls 但它列出了我原始程序目录中的文件 但我想将工作目录设置为自定义目录 我将如何实现它 这样 我将其设置为 usr
  • 无法将 Watson IoT Platform 连接到 Cloudant

    一段时间以来 我一直在尝试将 Watson IoT Platform 作为 Historian 服务连接到 Cloudant 数据库 我遵循了各种可用教程中的说明 但一项服务从未显示为与另一项服务的可能连接或扩展 这是我尝试过的一个教程ht
  • ios 8 解析推送中没有声音[重复]

    这个问题在这里已经有答案了 这很奇怪 更新我的应用程序以支持通过 Parse 使用 Parse 仪表板 发送的 iOS 8 推送通知后 推送通知不会发出任何声音 我在 Stackoverflow 上发现了这个重复项 但发布的答案对我不起作用
  • 解析 JSON 到 MySQL 表

    我正在使用 Zend Framework 1 12 我想创建一个基于 JSON 文件的表 我已经创建了表及其字段 现在它们都是长文本 它所要做的就是将它们插入到正确的列中 我遵循了这些例子 http www daniweb com web
  • 代表和活动之间有什么区别?

    代表和活动之间有什么区别 两者不都包含对可以执行的函数的引用吗 An Event声明增加了一层抽象和保护delegate实例 此保护可防止委托的客户端重置委托及其调用列表 并且仅允许在调用列表中添加或删除目标
  • WCF 中未返回 DateTime.Kind

    当处理DateTime具有 WCF 的对象 返回DateTime对象丢失了Kind财产 永远是DateTimeKind Unspecified即使我在退货之前手动更改它 我在 WCF 端这样做了 dateFrom DateTime Spec

随机推荐

  • 根据用户 ID 限制下拉选项

    我问这个问题是因为我不确定解决问题的最佳方法 问题 我有一个预先填充的下拉列表 其中包含 1 000 个左右的数字 我需要根据使用下拉列表的用户来限制下拉列表中显示的数字 我想到的解决方案 使用 jQuery 隐藏所有数字 使用 jQuer
  • Firebase:如何检查电子邮件是否在运行时经过验证

    所以流程将是这样的 用户通过 firebase 使用电子邮件和密码登录 如果电子邮件经过验证 他们将转到主要活动 否则他们将进入验证电子邮件活动 我想做的是 当他们处于验证电子邮件活动时 我将在 onCreate 方法中发送验证电子邮件 然
  • 有没有办法用#define 代替长命名空间?

    假设我有一个很长的命名空间 我不想一直输入它 但我不想使用using namespace 任何一个 我可以为此使用 define 吗 Example define glm quat glm gtc quaternion class Came
  • Javascript 网络摄像头捕获并使用 PHP 上传到服务器

    我有一个页面 使用 javascript 和 PHP 上传文件成功上传图像表单画布 第二页已成功将网络摄像头捕获到画布并正确显示 我正在尝试使用摄像头捕获实时CSS对象来调整图像上传脚本 但什么也不做 html是 折断 div div cl
  • Laravel Passport tokensExpireIn 似乎不起作用

    我正在使用 Laravel 5 4 Passport 来创建 SPA 应用程序 但是 我能够使身份验证工作 但访问令牌始终是短期令牌 过期时间为 600 秒 我无法通过以下方式增加过期时间 Passport tokensExpireIn C
  • 如何在 pandas groupby 直方图中显示标签名称

    我可以使用 pandas 在单个图中绘制多个直方图 但缺少一些东西 如何给出标签 我只能绘制一个图形 如何将其更改为layout 3 1 或其他内容 另外 在图1中 所有的垃圾箱都填充了纯色 很难知道哪个是哪个 那么如何用不同的标记 例如十
  • 有没有有效的方法来禁用 HTML 表单中的自动完成功能?

    当使用xhtml1 transitional dtddoctype 使用以下 HTML 收集信用卡号
  • Play2 如何从服务层而不是动作层管理事务?

    我正在使用 Play2 1 1 Java 和 JPA2 0 以及 hibernate 实现 通过代码控制事务而不是像下面那样使用 transactional 是正常的 JPA 代码风格 有没有办法在 Play 上像下面这样工作 或者如何使用
  • 在 p5js 中将画布导出为 GIF/PNG

    I use 原子编辑器 我要实现20 秒 GIF用我的画布 saveFrames 有一个限制 我猜 即使我输入 它也可以将 png 文件保存为短 gif 3 5 秒 saveFrames aa png 15 22 我发现了 CCapture
  • 如何组织大型代码文件?

    我越来越意识到 任何单个文件中的代码通常可以很容易地跨越数百行 尽管我知道实现可能是合理的 但它仍然感觉混乱和无组织 我知道在某些情况下需要大量代码 但是组织所有代码的最佳方法是什么 我考虑过将变量与方法分开 privates from p
  • Dart 中的函数类型定义/函数类型别名是什么?

    我已经阅读了描述 我明白它是一个函数类型别名 typedef 或函数类型别名为函数类型提供一个名称 您可以在声明字段和返回类型时使用该名称 当将函数类型分配给变量时 typedef 会保留类型信息 http www dartlang org
  • 如何知道两个线程中哪个线程首先完成执行

    我有两个线程 A 和 B 如果 A 先完成 那么我必须执行 function1 否则如果 B 先完成 我需要执行 function 2 我如何知道两个线程中哪一个先完成执行 您可以使用以下内容 仅当先前的值为空时才会设置该内容 即使只有一个
  • 未收到 ACTION_MY_PACKAGE_REPLACED

    我正在使用 ACTION MY PACKAGE REPLACED 来接收我的应用程序更新或重新安装的信息 我的问题是该事件永远不会被触发 我尝试了 Eclipse 和真实设备 这就是我所做的 显现
  • Python:将原始字符串转换为字节字符串而不添加转义字符

    我有一个字符串 BZh91AY SYA xaf x82 r x00 x00 x01 x01 x80 x02 xc0 x02 x00 x00 x9ah3M x07 lt xc9 x14 xe1BA x06 xbe x084 而且我要 b BZ
  • Android EditText 具有固定的最大行数且无滚动

    我想创建一个文本输入 1 始终显示3行 2 不允许用户输入超过 3 行可用空间的文本 3 如果用户输入的文本超过 3 行 则不可滚动 从技术上讲 我允许用户输入最多 500 个字符以保存到数据库 但我并不期望输入的文本量接近这个数量 因此
  • 在Java 8中以静态方式获取类名[重复]

    这个问题在这里已经有答案了 这是后续更一般和类似的问题 答案 https stackoverflow com questions 1696551 how to get the name of the calling class in jav
  • java中的计算器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 最近我在研究可以加 减 乘 除的简单计算器 public static void main String arr double num1
  • 如何在 Init 状态下访问提供者值

    如何从 init 函数或解决方法访问提供程序模型中的值 基本上 当我的应用程序加载时 我会在提供程序模型中保存一些值 一个值是一个搜索变量 然后我被重定向到加载页面 我需要该值来获取数据并呈现列表 我正在 init 方法中检索数据 我的主要
  • Ruby 中的安全整数解析

    我有一根绳子 比如说 123 我想将它转换为整数123 我知道你可以简单地做some string to i 但这会转换 lolipops to 0 这不是我想要的效果 当我试图用一种美好而痛苦的方式转换一些无效的东西时 我希望它在我脸上爆
  • 格式化 Fitnesse RowFixture 中的数据

    我有一个 Fitnesse RowFixture 它返回业务对象列表 该对象有一个浮点数字段 表示 0 到 1 之间的百分比 consumer业务对象的内容将是来自设计者的网页或报告 因此百分比的格式将由设计者而不是业务对象决定 如果页面能