Я новичок в DI и у меня есть вопрос о лучшей стратегии для модульного тестирования контроллера.
У меня есть контроллер, который использует DI для получения репозитория, mappingengine и logger. Именно так я узнал это из примера приложения 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;
}
Теперь у меня есть метод, который вызывается для сохранения досье. Внутри метода модель досье отображается на досье и сохраняется в базе данных.
[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();
}
Я хочу проверить контроллер, чтобы убедиться в двух вещах: 1, что досье правильно сопоставлено, и 2, что досье фактически полностью сохранено в базе данных.
Теперь мой вопрос: какова лучшая стратегия для этого? Должен ли я:
- Модульный тест контроллера в целом? И если да, то как?
- Издеваться над настойчивостью? Тогда как мне проверить, сохранился ли объект на самом деле?
Должно ли это быть выполнено в отдельном модульном тесте специально для проверки устойчивости базы данных?