【问题标题】:AutoFixture code based EF entity constraints基于 AutoFixture 代码的 EF 实体约束
【发布时间】:2015-03-19 20:22:26
【问题描述】:

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

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

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

现在,当我使用 Autofixture 实例化用户实体时,它会给我一个长度超过 8 的 UserName 字符串。这将在尝试将此实体保存到数据库时触发异常。有很多不同配置的属性,这让我无法充分利用 Autofixture。

【问题讨论】:

  • 代码中如何指定长度?你能提供一个小样本吗?
  • MarkSeemann:这个问题和你提到的那个有关,但不完全一样。 @NikosBaxevanis:我已经更新了我的问题以详细说明问题

标签: entity-framework integration-testing autofixture


【解决方案1】:

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

我猜 AutoFixture 只支持其中的 3 个:

  • 字符串长度属性
  • RegularExpressionAttribute
  • 范围属性

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

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

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

【讨论】:

  • 即使你的答案没有回答问题,但它指向了正确的方向(做了一些努力,但看起来比听起来更难
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-23
  • 2016-02-25
  • 2021-01-05
  • 2018-07-19
  • 2014-03-28
  • 1970-01-01
相关资源
最近更新 更多