繁体   English   中英

你怎么模拟 - _context.Entry(myEntity).Property(e => e.myProperty).IsModified

[英]How do you Mock - _context.Entry(myEntity).Property(e => e.myProperty).IsModified

我已经开始使用Moq,到目前为止,我想我已经研究出如何将我的界面抽象到另一层以支持Mocking DbContext。

现在我的代码正在运行,我点击了这一行

_context.Entry(updated).Property(e => e.Position).IsModified = false;

现在该条目为null,因此我收到错误。 我怎样才能让Moq高兴?

这是我的大部分IDataContext

public interface IDataContext
{
    IDbSet<Content> Contents { get; set; }
    IDbSet<FieldGroup> FieldGroups { get; set; }

    #region DbContext public properties

    DbChangeTracker ChangeTracker { get; }
    DbContextConfiguration Configuration { get; }
    Database Database { get; }

    #endregion

    #region DbContext public methods

    IEnumerable<DbEntityValidationResult> GetValidationErrors();
    DbEntityEntry Entry(object entity);
    DbEntityEntry<TEntity> Entry<TEntity>(TEntity entity) where TEntity : class;
    DbSet<TEntity> Set<TEntity>() where TEntity : class;
    DbSet Set(Type entityType);
    int SaveChanges();
    Task<int> SaveChangesAsync();

    #endregion

    #region State

    bool IsState(object entity, EntityState state);
    void SetState(object entity, EntityState state);

    #endregion
}

为了处理对象的设置状态,我然后将以下方法抽象为我的DataContext的方法

public bool IsState(object entity, EntityState state)
{
    return this.Entry(entity).State == state;
}


public void SetState(object entity, EntityState state)
{
    this.Entry(entity).State = state;
}

但我不知道如何应对财产问题。

任何帮助非常感谢

一旦你开始需要测试Entity Framework的内部结构(如ChangeTracker和条目状态)的“细节”,最好的办法就是使用内存中的DbContext表示进行测试,例如Effort

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM