特に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);
}
}
}
Azureを起動せずにAncestorDomainServiceロジックをテストできるように、TableDomainServiceをモックする必要があると思います。私はこのようなものを疲れました:
public class AncestorDomainService<TEntityContext> : TableDomainService<TEntityContext> where TEntityContext is a TableEntityContext
しかし、TableDomainServiceは、ジェネリックが使用されることを好みませんでした。EntityContextも設定してみましたが、読み取り専用です。他の人が汎用のDomainServiceとリポジトリのデザインパターンを使用しているのを見てきましたが、TableDomainServiceを使用するとAzureテーブルを舞台裏で使用できるため、TableDomainService<>を使用する必要があると思います。返されるTableDomainService、TableEntityContext、およびTableEntitySetを偽造する必要がありますか?