SpecFlow - 如何在具有自定义类型的实体上设置测试数据
SpecFlow - How to setup test data on a entity with a custom type
在 C# 中使用 SpecFlow -Entity Framework 应用程序,我正在尝试为以下结构的实体设置测试数据。
public partial class TYPE1
{
public int Prop1 { get; set; }
public virtual ICollection<TYPE2> Prop2 { get; set; }
}
public partial class TYPE2
{
public int Prop3 { get; set; }
}
测试数据:
Given I have a Type1 record with following data
| Prop1 | Prop2 |
| 123 | 0 |
[Given(@"I have a Type1 record with following data")]
public void GivenIHaveAType1RecordWithFollowingData(Table table)
{
foreach (var row in table.Rows)
{
var record =
this.PopulateModelFromTableRow<TYPE1>(row);
this.test.DbContext.TYPE1.Add(record);
}
}
我正在尝试找出一种方法来为 Prop2 分配一个 Type 2 值列表。我该怎么做?
您需要通过两个单独的步骤创建实体并填充集合:
Given I have a Type1 record with following data
| Prop1 |
| 123 |
And the Type1 record I just created as the following Prop2:
| Prop2 |
| 0 |
| 4 |
第一步将创建一个新的 Type1
对象并将其保存为 Prop2
的空集合。下一步应该获取您刚刚创建的 Type1
对象,并使用数据 table.
将项目添加到集合中
Gherkin 从未被设计为在一个步骤中构建包含集合的复杂对象。有很多解决方法,但它们通常会导致测试更难阅读和维护。最佳做法是在专门的步骤中填充实体的集合属性。
在 C# 中使用 SpecFlow -Entity Framework 应用程序,我正在尝试为以下结构的实体设置测试数据。
public partial class TYPE1
{
public int Prop1 { get; set; }
public virtual ICollection<TYPE2> Prop2 { get; set; }
}
public partial class TYPE2
{
public int Prop3 { get; set; }
}
测试数据:
Given I have a Type1 record with following data
| Prop1 | Prop2 |
| 123 | 0 |
[Given(@"I have a Type1 record with following data")]
public void GivenIHaveAType1RecordWithFollowingData(Table table)
{
foreach (var row in table.Rows)
{
var record =
this.PopulateModelFromTableRow<TYPE1>(row);
this.test.DbContext.TYPE1.Add(record);
}
}
我正在尝试找出一种方法来为 Prop2 分配一个 Type 2 值列表。我该怎么做?
您需要通过两个单独的步骤创建实体并填充集合:
Given I have a Type1 record with following data
| Prop1 |
| 123 |
And the Type1 record I just created as the following Prop2:
| Prop2 |
| 0 |
| 4 |
第一步将创建一个新的 Type1
对象并将其保存为 Prop2
的空集合。下一步应该获取您刚刚创建的 Type1
对象,并使用数据 table.
Gherkin 从未被设计为在一个步骤中构建包含集合的复杂对象。有很多解决方法,但它们通常会导致测试更难阅读和维护。最佳做法是在专门的步骤中填充实体的集合属性。