Это скорее вопрос для выяснения мнения, поэтому, возможно, не будет «правильного» ответа, но я бы приветствовал аргументы относительно того, почему ваш ответ «правильный».
Учитывая приложение MVC, которое использует Entity Framework для механизма сохраняемости, уровень хранилища, уровень обслуживания, который в основном относится к хранилищу, и метод удаления на контроллере, который выглядит следующим образом:
public ActionResult Delete(State model)
{
try
{
if( model == null )
{
return View( model );
}
_stateService.Delete( model );
return RedirectToAction("Index");
}
catch
{
return View( model );
}
}
Я ищу правильный способ это проверить. В настоящее время у меня есть поддельный репозиторий, который используется в службе, и мой модульный тест выглядит так:
[TestMethod]
public void Delete_Post_Passes_With_State_4()
{
//Arrange
var stateService = GetService();
var stateController = new StateController( stateService );
ViewResult result = stateController.Delete( 4 ) as ViewResult;
var model = (State)result.ViewData.Model;
//Act
RedirectToRouteResult redirectResult = stateController.Delete( model ) as RedirectToRouteResult;
stateController = new StateController( stateService );
var newresult = stateController.Delete( 4 ) as ViewResult;
var newmodel = (State)newresult.ViewData.Model;
//Assert
Assert.AreEqual( redirectResult.RouteValues["action"], "Index" );
Assert.IsNull( newmodel );
}
Это перебор? Нужно ли проверять, действительно ли удалена запись (так как у меня уже есть тесты Service и Repository, которые это подтверждают)? Должен ли я даже использовать здесь поддельный репозиторий или было бы логичнее просто издеваться над всем этим?
В примерах, которые я смотрю, использовалась эта модель ведения дел, и я просто скопировал ее, но я действительно открыт для того, чтобы делать что-то «наилучшим образом».
Спасибо.