我知道以前曾经问过这个问题,而且总会有人来,并说“这不是一个单元测试,而是一个整合测试。"我只是打电话给胡说八道。
所以让我们考虑一个非常简单的实体及其地图:
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实例并对该对象做一些断言。
以这种方式思考,此类是某些Entity Framework代码的参数。我不需要测试实体框架对它的影响,因为该实体框架的业务,但我确实需要测试我是否正确生成参数。
如果这是计算用户帐户余额的代码,并且EF代码使用该余额来更新数据库,我就不会测试更新代码,但我确定会测试计算余额的代码将被传递给更新代码。
This guy asked basically the same question如果你看看他对接受的答案的评论,你会发现他没有得到他想要的东西。
我在这里寻找的是以下之一: