我正在尝试专门使用 Moq 来学习和实施 TDD,但我遇到了一个我无法弄清楚如何模拟的设计:
namespace RIACompletelyRelativeWebService.Web.Services
{
[EnableClientAccess]
public class AncestorDomainService : TableDomainService<AncestorEntityContext>
{
public AncestorDomainService()
{
//this.EntityContext = new AncestorEntityContext();
}
public IQueryable<AncestorEntity> GetAncestorEntities()
{
return this.EntityContext.AncestorEntities;
}
public void AddAncestorEntity(AncestorEntity entity)
{
this.EntityContext.AncestorEntities.Add(entity);
}
}
}
我想我需要模拟 TableDomainService 以便我可以在不启动 Azure 的情况下测试我的 AncestorDomainService 逻辑。我厌倦了这样的事情:
public class AncestorDomainService<TEntityContext> : TableDomainService<TEntityContext> where TEntityContext is a TableEntityContext
但是,TableDomainService 不喜欢使用泛型。我也尝试设置 EntityContext 但它是只读的。我见过其他人使用通用 DomainService 和 Repository 设计模式,但由于 TableDomainService 让我可以在幕后使用 Azure 表,所以我认为我必须坚持使用 TableDomainService<>。我只需要伪造返回的 TableDomainService、TableEntityContext 和 TableEntitySet 吗?