使用 CreateInstance 对表格单元格内容进行 Specflow 步骤参数转换

2023-12-01

有没有人解决了如何结合 SpecFlow.Assist CreateInstance/CreateSet 将 SpecFlow 步骤参数转换应用于表格中的单元格的难题? (这里合并代码以节省空间)

Given a table like the following:
 | Price | Zip   | Effective Date |
 | 10.00 | 90210 | in 2 days      |
When the 'given' step executes
And the table data populates a poco
Then the effective date should be transformed into a DateTime with value of 2 days from today

[Given(@"a table like the following:")]
public void GivenATableLikeTheFollowing(Table table)
{
    var temp = table.CreateInstance<Temp>();
}

internal class Temp
{
    decimal Price { get; set; }
    int Zip { get; set; }
    DateTime EffectiveDate { get; set; }
}

[Binding]
public class Transforms
{
    [StepArgumentTransformation(@"in (\d+) days?")]
    public DateTime InXDaysTransform(int days)
   {
      return DateTime.Today.AddDays(days);
   }
}

步骤参数转换绑定显然不适用于表格单元格内容(因为该步骤的参数是 Table 类型),但以某种方式 SpecFlow.Assist CreateInstance/CreateSet 仍会将单元格数据转换为基本类型。

例如,如果有效日期的内容是“11/13/2016”而不是“2 天后”,则底层 poco 的有效日期属性会很好地转换为 DateTime(或 int、decimal 等)。

我看到了一些其他解决方案,例如在步骤定义本身中应用转换,例如here或创建 StepArgumentTransformation对于整个表,但是...明显的缺点。更新:这个问题类似,但解决方案还避免将 StepArgumentTransformation 与 CreateInstance/CreateSet 混合在一起。

中还有一个部分SpecFlow 辅助助手有关通过注册值检索器/比较器进行扩展的文档,但在我的示例中,日期时间集已经存在。那么,也许是自定义 DateTime 类型?看起来也许可以检查已知类型的 StepArgumentTransformations 或类似的东西。

In the 日期时间检索器, 就像是..

    public virtual DateTime GetValue(string value)
    {
        var returnValue = DateTime.MinValue;
        // check for StepArgumentTransformations here first?
        DateTime.TryParse(value, out returnValue);
        return returnValue;
    }

关于在使用 table.CreateInstance 时我缺少将 StepArgumentTransformation 应用于表格单元格内容的任何想法?或者提到的解决方案之一是最好/唯一的方法吗?


我创建了一个小型原型,可用于重新配置 Assist 以便能够通过以下方式获取转换:[StepArgumentTransformation]绑定。

我的计划是写一篇关于它的博文,但在它准备好之前,也许你可以从这个要点中领悟到本质。 (我一年前为 SpecFlow v2.0 做过这件事,因此可能需要进行一些较小的调整。)

https://gist.github.com/gasparnagy/a478e5b7ccb8f557a6dc

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

使用 CreateInstance 对表格单元格内容进行 Specflow 步骤参数转换 的相关文章

  • MVC 重定向到没有控制器的视图

    希望应该是一个简单的 我创建了一个通用错误视图 当整个站点的操作方法内发生异常时 我想显示该视图 我创建了一个部分页面 所有导航都位于其中 因此我不需要在此视图上使用控制器 那么如何从控制器内的操作方法重定向到它 像这样的东西 HttpPo
  • 更快的算法来计算有多少数字可以被范围内的特定整数整除

    int a b c d 0 cin gt gt a gt gt b gt gt c for int i a i lt b i if i c 0 d cout lt
  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • 使用不带参数的 Split() 时,默认分隔符是什么?

    所以我看了看String Split 今天 C 中的方法 我意识到你也可以向它传递零参数 这是我从未考虑过的 使用时默认的分隔符是什么Split 没有任何参数 如果没有值 则为空白 来源自here https msdn microsoft
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 将成员函数作为参数传递/c++

    我想用 C 实现一个类b可以通过封装该迭代器类型的成员集进行某种迭代 喜欢 b object for each x do function f so 函数 f会得到每个人的x成员并做任何事情 比方说 void function f x me
  • .net Framework (.net 4.0) 中定义 Base 3 数字的类

    我正在寻找一些可以用来定义 3 基数 三进制数 的类 有什么我可以在 net 框架中使用的东西或者我需要写一些东西吗 谢谢你的帮助 您可以使用解析Convert ToInt32 s base http msdn microsoft com
  • 使用scanf()时如何区分整数和字符

    我只是使用该功能scanf 代码如下 scanf d a printf d a 当我输入1时 它会像我想要的那样打印1 但即使我输入 1a 它也会像以前一样打印 1 当用户输入非整数时 例如 2 3 12ab 1 a 我想向用户显示 输入整
  • 为什么重载方法在 ref 仅符合 CLS 方面有所不同

    公共语言规范对方法重载非常严格 仅允许根据其参数的数量和类型来重载方法 如果是泛型方法 则根据其泛型参数的数量进行重载 根据 csc 为什么此代码符合 CLS 无 CS3006 警告 using System assembly CLSCom
  • 不要声明只读可变引用类型 - 为什么不呢?

    我一直在阅读这个问题 https stackoverflow com questions 2274412 immutable readonly reference types fxcop violation do not declare r
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 从包含大量文件的目录中检索文件

    我的目录包含近 14 000 000 个 wav 格式的音频样本 所有普通存储 没有子目录 我想循环浏览文件 但是当我使用DirectoryInfo GetFiles 在该文件夹上 整个应用程序冻结了几分钟 可以用另一种方式完成吗 也许读取
  • 如何在 VS Code 中为 CMake 项目设置 C/C++ IntelliSense?

    我正在尝试使用 libTooling 编写一个工具 我对其进行了设置 以便它可以使用 LLVM 文档中的示例进行编译 然而 C C IntelliSense 似乎不适用于 CMake 项目 我的工具位于
  • realloc():重新分配为 char * 上的 strcat 腾出空间时下一个大小无效 [重复]

    这个问题在这里已经有答案了 我在以下代码中收到无效内存错误 printf s n FINE 5 printf s LENGTH IS d n FINE 6 strlen buffer char realloc buffer strlen b
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • 理解 C++11 中的 std::atomic::compare_exchange_weak()

    bool compare exchange weak T expected T val compare exchange weak 是 C 11 中提供的比较交换原语之一 它是weak即使对象的值等于 它也会返回 falseexpected
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 将一个 long 转换为两个 int 以进行重构

    我需要将一个参数作为两个 int 参数传递给 Telerik Report 因为它不能接受长参数 将 long 拆分为两个 int 并在不丢失数据的情况下重建它的最简单方法是什么 使用掩蔽和移位是最好的选择 根据文档 long 保证为 64
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se

随机推荐

  • 实体框架 6:审核/跟踪变更

    我的核心项目是用 C 编写的 我在一个数据库上工作 其中一些表具有 user mod 和 date mod 列 用于标记谁以及何时制作了一些mod 并且与 data new 和 user new 相同 我的问题 有没有办法集中它并自动插入这
  • jquery ajax调用不是异步的

    我对 jQuery 的 AJAX 方法的实现很陌生 我有一个简单的设置 可以访问两个不同的页面 一个需要 10 秒才能完成 我在上面设置了一个计时器 另一个检查第一页的状态 这两个函数是progressCheck 它每秒请求其页面的最新状态
  • 使用邻接列表与邻接矩阵的图的大小?

    Suppose there are 236 web pages and on average each web page has 24 hyperlinks Consider the directed graph with one vert
  • 在 Python 中通过 Selenium 导航到新页面

    如何在 python 中使用与 Selenium 相同的驱动程序导航到另一个网页 我不想打开新页面 我想继续使用同一个驱动程序 我认为以下方法会起作用 driver navigate to https support tomtom com
  • 如何在 PHP 中构建跨数据库查询?

    在我们的最后一集中 我如何在 MySQL 中构建跨数据库查询 我学会了如何在MySQL中构建跨数据库查询 这很有效 但是当我们的英雄尝试在 PHP 中使用这些新知识时 他发现他最好的朋友失败了 我看了一下mysql select db对于
  • 如何在应用程序中的每个 MessageBox 处放置断点?

    如何在应用程序中的每个 MessageBox 处放置断点 在 Visual Studio IDE 中选择菜单Debug gt New breakpoint gt Breakpoint at Function 用文本 MessageBox 填
  • Retrofit 收到 400 错误请求,但与邮递员一起使用

    我的 api 基本网址是 https locodealapi herokuapp com api deals 在邮递员中 在标题中传递以下内容 效果很好 x access token eyJhbGciOiJIUzI1NiIsInR5cCI6
  • VBA - 如果 A 列中的单元格不为空,则 B 列等于

    我正在寻找一些代码来查看 A 列 只要 A 列中的单元格不为空 那么 B 列中的相应单元格将等于特定值 因此 如果 Cell A1 则 Cell B1 Value MyText 重复此操作 直到 A 列中的单元格为空白或为空 为了添加更多说
  • Mercurial - 添加不在存储库文件夹内的项目

    我是一个没有经验的 Mercurial 用户 我正在使用 VS2010 和 Mercurial 我让一切都在一个存储库上运行良好 该存储库包含一个解决方案文件和嵌套在 父 文件夹中的两个项目 每当我更改文件时 提交过程都会检测到更改等 然后
  • 如何为 Swing 中的 JTable 提供分页支持?

    我在 Swing Java 中创建了一个 GUI 其中使用了 JTable 现在我想通过使用分页在其中显示下一页信息 我该怎么做呢 实现此目的的另一个选项是使用无滚动条的滚动窗格和几个导航按钮来实现控制 已经添加的按钮都是正常的JButto
  • 如何从 Analytics Application Insights 获取 Qna Maker“Q”?

    我已经使用 Qna Maker 创建了聊天机器人的知识库 并尝试使用 Analytics Application Insights 可视化一些统计数据 我想做的事 我想创建一个图表 其中包含最常见的 Qna Maker 问题 我的问题 我在
  • 读取 React 应用程序 src 文件夹中的 excel

    我使用创建了一个反应应用程序react CLI 我现在创建了一个名为的文件夹data现在我想使用读取该数据xlsxnpm 包 但是 它不起作用 我认为这可能与我引用 Excel 文件的方式有关 因为我收到警告 字符串 类型上不存在属性 工作
  • 当我使用另一个控制器渲染页面时,表单验证停止工作

    我编写了一个快速 CI 库类来渲染我的页面 这样我就不必一直输入 this gt load gt view 并且保持 DRY 现在 当我在传递无效数据后重新呈现联系表单时 错误消息不会显示 图书馆类 class Page extends C
  • 如何让用户在 Laravel 5 中切换语言?

    我创建了一个双语 Laravel 5 应用程序 其中包含两个语言环境 en 和 ar 我想要的是网站访问者能够通过单击标有语言名称的链接来更改网站的语言 选项1 将用户语言存储在数据库中 我的用户语言存储在用户表中 这是为了避免用户每次登录
  • 如何使用 Win32::Console 读取特殊键?

    当我按下Up key 这个脚本 术语 术语密钥 输出You pressed
  • 如何停止EnumWindows无限运行win32

    该代码一直有效 不知何故 我设法让 Visual C Express 不会在最终返回语句上遇到断点 并且它似乎会永远运行 在下面的示例代码中 EnumWindows 无限枚举 在枚举完所有窗口后 如何才能使其停止 include
  • C# 剥离/转换一个或多个字符

    有没有一种快速的方法 无需显式循环字符串中的每个字符 并剥离或保留它 在 Visual FoxPro 中 有一个函数 CHRTRAN 可以很好地完成此任务 它采用 1 1 字符替换 但如果替代位置中没有字符 则会从最终字符串中删除该字符 前
  • 如何将 getSymbols(quantmod 库)中的数据存储到列表中?

    这是我正在运行的代码 library quantmod library tseries Stocks companies c IOC BO BPCL BO ONGC BO HINDPETRO BO GAIL BO for i in comp
  • 从代码隐藏或 XAML 中设置 NotifyIcon 控件中的图像

    我正在使用 WindowsForms 中的 NotifyIcon 因为在 WPF 中我们没有这样的控件 但 WinForms 中的控件工作正常 我的问题只是当图像位于项目中时将图像设置为 NotifyIcon 中的图标 我的项目中有一个名为
  • 使用 CreateInstance 对表格单元格内容进行 Specflow 步骤参数转换

    有没有人解决了如何结合 SpecFlow Assist CreateInstance CreateSet 将 SpecFlow 步骤参数转换应用于表格中的单元格的难题 这里合并代码以节省空间 Given a table like the f