EF反向POCO发生器单元测试

时间:2017-10-11 19:36:29

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

我正在使用clipboard.js,其中有一个标志

AddUnitTestingDbContext = true; // Will add a FakeDbContext and FakeDbSet for easy unit testing

它为单元测试创​​建 FakeDbContext FakeDbSet ,但在 FakeDbContext 内部,某些方法未实现。

 public System.Data.Entity.Infrastructure.DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class
    {
        throw new System.NotImplementedException();
    }
    public System.Data.Entity.Infrastructure.DbEntityEntry Entry(object entity)
    {
        throw new System.NotImplementedException();
    }
    public System.Collections.Generic.IEnumerable<System.Data.Entity.Validation.DbEntityValidationResult> GetValidationErrors()
    {
        throw new System.NotImplementedException();
    }
    public System.Data.Entity.DbSet Set(System.Type entityType)
    {
        throw new System.NotImplementedException();
    }
    public System.Data.Entity.DbSet<TEntity> Set<TEntity>() where TEntity : class
    {
        throw new System.NotImplementedException();
    }
    public override string ToString()
    {
        throw new System.NotImplementedException();
    }

覆盖它们或实现它们的正确方法是什么,以便我可以在单元测试中使用这些调用。

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

我明白了。您可以在 EF.Reverse.POCO.ttinclude 文件中编写代码,该文件将被重新生成。打开该文件并找到函数设置(),然后你可以写这样的东西来获得所需的功能。希望这会对某人有所帮助。

public System.Data.Entity.DbSet<TEntity> Set<TEntity>() where TEntity : 
class
    {
<#
foreach (Table tbl in from t in tables.Where(t => !t.IsMapping && 
t.HasPrimaryKey).OrderBy(x => x.NameHumanCase) select t)
{
#>


        if(typeof(TEntity) == typeof(<#=tbl.NameHumanCaseWithSuffix #>))
        {
            return <#=Inflector.MakePlural(tbl.NameHumanCase) #> as 
System.Data.Entity.DbSet<TEntity>;
        }

<# } #>

        throw new System.NotImplementedException("Doesn't have this table type!");
     }