Я никогда раньше не работал с TDD, пока не начал изучать некоторые курсы, но я понятия не имею, как это сделать в реальной жизни.
У меня есть этот проект MVC + DDD + Уведомления о Домене + CQRS + Источник событий + Шаблоны Unity of Work и Repository, и я хотел бы проверить, но я не знаю, с чего начать или даже как смоделировать эти инъекции.
Есть мой контроллер
public class DepartmentsController : BaseController
{
private readonly IDepartmentAppService _departmentAppService;
public DepartmentsController(IDepartmentAppService departmentAppService,
INotificationHandler<DomainNotification> notifications) : base(notifications)
{
_departmentAppService = departmentAppService;
}
public ActionResult Create(DepartmentViewModel departmentViewModel)
{
if (!ModelState.IsValid) return View(departmentViewModel);
_departmentAppService.CreateDepartment(departmentViewModel);
if (IsValidOperation())
{
this.AddToastMessage("Success", "Department Saved", ToastType.Success);
return RedirectToAction("Index");
}
this.AddToastMessage("Error", GetNotifications().FirstOrDefault()?.Value, ToastType.Error);
return View(departmentViewModel);
}
}
И мой слой Serivce
private readonly IMediatorHandler _bus;
private readonly IDepartmentRepository _departmentRepository;
private readonly IMapper _mapper;
public DepartmentAppService(IMapper mapper,
IDepartmentRepository departmentRepository,
IMediatorHandler bus)
{
_departmentRepository = departmentRepository;
_bus = bus;
_mapper = mapper;
}
public void CreateDepartment(DepartmentViewModel departmentViewModel)
{
var registerCommand = _mapper.Map<RegisterDepartmentCommand>(departmentViewModel);
_bus.SendCommand(registerCommand);
}
Я создаю этот простой метод тестирования, но я действительно не знаю, чего ожидать, я не уверен, что мне делать на этом этапе, не могли бы вы, ребята, помочь мне здесь?
[TestClass()]
public class DepartmentAppServiceTests
{
private readonly Mock<IMediatorHandler> _mediatorHandlerMock;
private readonly Mock<IDepartmentRepository> _departmentRepositoryMock;
private readonly Mock<IMapper> _mapper;
public DepartmentAppServiceTests()
{
_mediatorHandlerMock = new Mock<IMediatorHandler>();
_departmentRepositoryMock = new Mock<IDepartmentRepository>();
_mapper = new Mock<IMapper>();
}
[TestMethod()]
public void CreateDepartmentTest()
{
//Arrange
var fakeDepartment = GetFakeDeparment();
var fakeDepartmentVm = new DepartmentViewModel();
Mock<RegisterDepartmentCommand> expected = new Mock<RegisterDepartmentCommand>();
expected.SetupGet(x => x.Id).Returns(new Guid());
expected.SetupGet(x => x.Name).Returns("Department Test");
_departmentRepositoryMock.Setup(x => x.GetById(It.IsAny<Guid>()))
.Returns(fakeDepartment);
_mediatorHandlerMock.Setup(x => x.SendCommand(It.IsAny<RegisterDepartmentCommand>()));
//Act
var departmentService = new DepartmentAppService(
_mapper.Object,
_departmentRepositoryMock.Object,
_mediatorHandlerMock.Object);
_mapper.Setup(m => m.Map<Department, DepartmentViewModel>(It.IsAny<Department>())).Returns(fakeDepartmentVm);
departmentService.CreateDepartment(fakeDepartmentVm);
//Assert
// !_notifications.HasNotifications();
}
private Department GetFakeDeparment()
{
return new Department()
{
Id = new Guid(),
Name = "fakeName",
};
}
}
}