私はDIを初めて使い、コントローラーの単体テストの最善の戦略について質問があります。DIを使用してASP.NETでユニットをテストするための最善の戦略
私はDIを使ってリポジトリ、マッピングエンジン、ロガーを取得するコントローラを持っています。これは基本的に私がKozmicsサンプルアプリケーションからそれを学んだ方法です。
private readonly IRepository repository;
private readonly IMappingEngine mappingEngine;
private readonly ILogger logger;
public DossierController(IRepository repository, IMappingEngine mappingEngine, ILogger logger)
{
this.repository = repository;
this.mappingEngine = mappingEngine;
this.logger = logger;
}
ここでは、文書を保存するためのメソッドがあります。このメソッドの中で、dossiermodelは一式にマップされ、データベースに保存されます。
[HttpPost]
[ActionName("Dossier")]
[AcceptVerbs(HttpVerbs.Post)]
[AcceptParameter(Name = "button", Value = "save")]
public ActionResult Dossier_Save(string button, DossierModel dossierModel, string returnUrl)
{
if (!Request.IsAuthenticated)
return RedirectToAction("Index", "Home");
if (!ModelState.IsValid) return View(dossierModel);
Dossier dossier = mappingEngine.Map<DossierModel, Dossier>(dossierModel);
dossier.DigitaleHandtekeningDatum = new DateTime(2011, 11, 11);
repository.TransactionBegin();
repository.Save(dossier);
repository.TransactionCommit();
return View();
}
私は2つのことを確認するために、コントローラをテストしたい:関係書類が正しくマッピングされていることを1と2の関係書類が実際に完全にデータベースに保存されていること。
今私の質問です:これのための最良の戦略は何ですか?すべきか:
- ユニット全体としてコントローラをテストしますか?そしてもしそうなら、どのように?
- 永続性を模倣しますか?次に、オブジェクトが実際に永続化されているかどうかをテストしますか?
これは、特にデータベースの永続性をテストするための個別のユニットテストで行う必要がありますか?
リクエストはASP.NET MVCでは静的ではありません。 –
ああ、それでも、それを嘲笑するのは難しいです。 (havvent mvcで今、しばらくの間働いた、ちょうどそれがテストするのは簡単ではないことを思い出した)。私の答えを固定した –