我该如何进行单元测试EntityTypeConfiguration?

时间:2017-05-25 21:40:52

标签: c# entity-framework unit-testing entity-framework-6

我知道以前曾经问过这个问题,而且总会有人来,并说“这不是一个单元测试,而是一个整合测试。"我只是打电话给胡说八道。

所以让我们考虑一个非常简单的实体及其地图:

public class Tag
{
    public virtual long Id { get; set; }
    public virtual string Text { get; set; }
}

public class TagConfiguration : EntityTypeConfiguration<Tag>
{
    public TagConfiguration()
    {
        ToTable("Tag", "dbo")
            .HasKey(tag => tag.Id);

        Property(tag => tag.Id)
            .HasColumnType(SqlDbType.BigInt.ToString())
            .IsRequired()
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);

        Property(tag => tag.Text)
           .HasColumnType(SqlDbType.NVarChar.ToString())
           .HasMaxLength(64)
           .IsRequired();
    }
}

基本上我们正在查看一个实体,该实体是一个键入字符串的数字。

我想在这里测试什么?好吧,我不明白为什么我不能创建一个TagConfiguration实例并对该对象做一些断言。

  • 表名是否正确?
  • 架构名称是否正确?
  • 长字段是映射到SQL BigInt而不是SQL Int吗?
  • 长字段是否会转到NOT NULL列?
  • Text字段是映射到NVarChar而不是VarCar吗?
  • Text字段是否转到NOT NULL列?
  • 文本的最大长度是否足够长。

以这种方式思考,此类是某些Entity Framework代码的参数。我不需要测试实体框架对它的影响,因为该实体框架的业务,但我确实需要测试我是否正确生成参数。

如果这是计算用户帐户余额的代码,并且EF代码使用该余额来更新数据库,我就不会测试更新代码,但我确定会测试计算余额的代码将被传递给更新代码。

This guy asked basically the same question如果你看看他对接受的答案的评论,你会发现他没有得到他想要的东西。

我在这里寻找的是以下之一:

  • 以下是测试方法:

0 个答案:

没有答案