SpecFlow-如何在具有自定义类型的实体上设置测试数据 - c#

我正在C#-Entity Framework应用程序中使用SpecFlow,试图为以下结构的Entity设置测试数据。

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分配类型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对象,并使用数据表将项目添加到集合中。

Gherkin从未设计过在单个步骤中构建包含集合的复杂对象。有很多解决方法,但是它们常常导致难以阅读和维护的测试。最佳实践是在专门的步骤中​​填充实体的集合属性。

单元测试休息点 - java

我已经用Java编写了REST端点。应用程序中有c#代码使用RestClient调用这些端点。我正在考虑为这些编写单元测试。只是想知道什么是最好的方法? Moq框架或NUNIT还是其他?有任何想法吗?谢谢。 参考方案 如果要在Java中测试REST端点,则可以使用Mockito(https://site.mockito.org/)之类的模拟框架来模拟所需的任…

在没有静态测试数据库的情况下,如何使DAO类的单元测试变脆? - java

这是scanario:我正在研究一个DAO对象,该对象使用休眠条件API来形成许多复杂的查询,以对数据库执行某些任务(例如,跨多个字段的关键字搜索)。我们需要对此进行单元测试,以确保所生成的查询在各种情况下都是正确的。测试它的一种方法(可能是更好的方法)是通过在最后检查休眠条件并模拟数据库交互来正确创建休眠条件。但是,这是不理想的,因为它首先是一种作弊行为(…

PHPUnit测试的目录布局? - php

我是从事PHP项目的长期Java程序员,并且试图使PHPUnit正常工作。使用Java进行单元测试时,通常将测试用例类和常规类放在单独的目录中,如下所示-/src MyClass.java /test MyClassTest.java 等等。使用PHPUnit进行单元测试时,遵循相同的目录结构是常见的做法,还是有更好的方法来布置测试类?到目前为止,我可以使“…

是否可以在静态类中注入模拟 - java

我有静态课。我正在为使用Junit和Mockito的静态方法之一编写JUnit。在该方法中,将调用其他类级别的静态变量的函数。我想模拟这个函数调用。我的代码如下,class ABC { public static SomeVariable var; public static Value getSomething() { try { Value val = …

未处理的异常Junit - java

我无法运行测试,因为此语句decorator.decorate(new EncoderColumnDecorator())中的测试出现红色弯曲的错误行,要求我使用try / catch或add throws。 这是错误消息。 当我已经具有“ expected”属性时,为什么必须放置try / catch或引发异常我的单元测试:@Test(expected=D…