c# – 如何使用SpecFlow中的table.CreateSet <>(myClass)()生成缺失值?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 如何使用SpecFlow中的table.CreateSet <>(myClass)()生成缺失值?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1405字,纯文字阅读大概需要3分钟。
内容图文
![c# – 如何使用SpecFlow中的table.CreateSet <>(myClass)()生成缺失值?](/upload/InfoBanner/zyjiaocheng/757/fc511829bb654ade9538754656f8cd6a.jpg)
我第一次使用SpecFlow为我的项目编写测试,我遇到了一个小问题.
我有下一堂课:
public class FancyName
{
[DataMember]
public Guid Guid { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public List <Country> Countries { get; set; }
}
我想在我的测试中使用SpecFlow助手生成这个类.
以下是场景的一部分:
[...]
When i add some names
| Name | Countries |
| UK | 1 |
| US | 2 |
[...]
我尝试在步骤定义中解析它,如下所示:
[When(@"I add some names")]
public void AddNames(Table table)
{
var names = table.CreateSet<FancyName>();
[...]
}
我遇到了两个问题:
>我没有传递Guid因为想要像Guid.NewGuid()那样生成它所以创建的对象包含null
>我将国家作为排序传递,但我需要创建List< Country>().
我曾经尝试迭代表并手动创建FancyName对象,但据我所知,它不是SpecFlow方式.我试图查看文档,并没有找到合适的解决方案.
可能有人知道解决这个问题的真正好方法吗?
提前致谢.
解决方法:
Table.CreateSet<>无法表演魔法.它不能知道它应该为你的对象创建一个新的Guid,或者它应该创建一个包含2个国家的列表.我想你必须自己创建这个对象.
解决此问题的最佳方法是使用[StepArgumentTransformation]
这样的事情:
[StepArgumentTransformation]
public List<FancyName> TransformToFancyName(Table table)
{
//create the list from the table contents
}
[When(@"I add some names")]
public void AddNames(List<FancyName> names)
{
.. use your FancyNames here
}
specflow将为任何具有List< FancyName>参数的Step调用StepArgumentTransformation.作为最后一个参数和功能中的相应表
内容总结
以上是互联网集市为您收集整理的c# – 如何使用SpecFlow中的table.CreateSet <>(myClass)()生成缺失值?全部内容,希望文章能够帮你解决c# – 如何使用SpecFlow中的table.CreateSet <>(myClass)()生成缺失值?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。