基于AutoFixture代码的EF实体约束

时间:2015-03-19 20:22:26

标签: entity-framework integration-testing autofixture

Autofixture是否能够根据使用EF fluent API完成的映射配置创建实体?我更具体地看一下字符串是否已经配置了一定长度,但Autofixutre正在生成长度更长的字符串。

- 更新了问题 - 让我们以 UserName 属性的用户实体为例,其长度固定为8个字符。 UserName 属性的配置使用EF Fluent API完成,如下所示:

modelBuilder.Entity<User>().Property(t => t.UserName).HasMaxLength(8);

现在,当我使用Autofixture实例化User实体时,它为我提供了一个长度超过8的 UserName 字符串。这会在尝试将此实体保存到db时触发异常。有许多不同配置的属性,这使我无法充分利用自动混合功能。

1 个答案:

答案 0 :(得分:0)

AutoFixture对您的ORM一无所知。因此,没有内置的EF配置支持。它确实支持一些System.ComponentModel.DataAnnotations属性。

我猜AutoFixture只支持其中3个:

  • StringLengthAttribute
  • RegularExpressionAttribute
  • RangeAttribute

因此,对于特定示例,您可以将[StringLength]添加到UserName属性,而不是使用Fluent API。

要获得更多支持,您需要一个可以读取EF配置并使用EF约束配置AutoFixture的扩展。在这方面做了一些努力,但似乎比听起来更难。

请看这里 - https://github.com/AutoFixture/AutoFixture/issues/162