私はASP.NET MVCを使い始めていますが、今ではEF Code First POCOクラスでリポジトリパターンを使用し、DI用にNinjectを使用することについて基本的に理解しています。MVCコードをValidation LogicとTDDで使用する
私は、適切なTDDの習慣を身につけて、ロジックを実装する場所と一緒に使用するのが最善であるかどうかを完全に理解したいと思っています。例えば
私は、以下の単純化されたPOCOクラスがあります。ここでは
public int ProjectID { get; set; }
[Required]
[MaxLength(150)]
public string Title { get; set; }
public string Description { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? DueDate { get; set; }
public DateTime? CompletionDate { get; set; }
public virtual ICollection<ProjectCode> ProjectCodes { get; set; }
public virtual ICollection<ProjectTask> ProjectTasks { get; set; }
は、私はDueDateとCompletionDateであることを検証したいと思い、私のインターフェイス(MVCScaffoldingによって生成された)
public interface IProjectRepository
{
IQueryable<Project> All { get; }
IQueryable<Project> AllIncluding(params Expression<Func<Project, object>>[] includeProperties);
Project Find(int id);
void InsertOrUpdate(Project project);
void Delete(int id);
void Save();
}
ですStartDateより遅い私は私の視野でうまくいかないjavascriptの検証を有効にするのに便利だが、ちょっと複雑なのでデータアノテーションを使ってこれを行うことができるかどうかはわからない。
データアノテーションを使用できるのであれば、このロジックのテストを書く方法についてはわかりません。
私の他のアイデアは、この検証を実行するためにコントローラとインターフェイスの間にサービスレイヤーを作成することでしたが、クライアント/サーバー側の検証を行う簡単な方法や、基本サービス私が必要とする日付を検証する。
私はこれ以上の複雑なバリエーションを予定しています。今は自分のアーキテクチャを「正しい」ものにするのが良いでしょう。