您能否将泛型类型 传递给规范流步骤
本文关键字:范流步 泛型类型 | 更新日期: 2023-09-27 18:35:09
绑定规范流测试时,传入字符串、整数、json 文件很容易通过规范流变得容易,但是在 dry 的良好实践中,您可以在规范流步骤中传入泛型类型吗?
例如
Scenario
When I call the URL with the RequestObject and Type <url> <request> <type>
The response shall equal <response>
|url|request|type |
|xyn|abc |customObjectc#object |
[When(@"When I call the URL with the RequestObject and Type (.*)(.*)(.*)")]
public void WhenIBlablablabla<T>(string url, string request){}
传入的类型<T>
在哪里,或者类似的东西?我想在干燥的良好实践中尽可能概括我的规格流。
你可以用最少的代码重复来做到这一点:
public void WhenIBlablablabla(string url, string request, Type type)
{
// Do stuff
}
[When(@"When I call the URL with the RequestObject and Type (.*)(.*)(.*)")]
public void WhenICallTheURLWithTheRequestObjectAndType(string url, string request, string type)
{
Type systemType = Type.GetType(type);
WhenIBlablablabla(url, request, systemType);
}
请注意,此解决方案不允许将泛型作为类型参数传递。可以使用类反射来检查当前类的方法,以查看它们是否接受基于 systemType
变量的参数和泛型类型。
不能在步骤中使用泛型。当 SpecFlow 将特征中的步骤中的参数转换为步骤绑定中的参数时,它使用的是方法参数的类型信息。因此,步骤绑定方法定义您获取的类型,而不是功能文件中的内容。
您是否查看了步骤参数转换?请参阅 http://www.specflow.org/documentation/Step-Argument-Conversions/
SpecFlow 有默认的(它们是用于 int、float 等的那些),您可以添加自己的。