【发布时间】:2015-03-24 22:20:25
【问题描述】:
我已经开始使用 Moq,到目前为止,我想我已经想出了如何将我的接口抽象到另一个层以支持模拟 DbContext。
现在我的代码正在运行,我点击了这一行
_context.Entry(updated).Property(e => e.Position).IsModified = false;
现在条目为空,所以我得到一个错误。我怎样才能让 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;
}
但我不确定如何处理属性问题。
非常感谢任何帮助
【问题讨论】:
标签: c# .net entity-framework unit-testing moq