public async Task GetByIdAsync() { // Arrange var groupId = new Guid(GroupId); var mockStudents = new Mock <IStudentService>(); mockStudents.Setup(repo => repo.GetByIdAsync(Guid.Parse(StudentId))) .Returns(Task.FromResult(new Student { Name = "Test Student" })); var mockEmployees = new Mock <IEmployeeService>(); mockEmployees.Setup(repo => repo.GetByIdAsync(Guid.Parse(TeacherId))) .Returns(Task.FromResult(new Employee { Name = "Test Employee" })); var mockRepo = new Mock <IGroupRepository>(); mockRepo.Setup(repo => repo.GetByIdAsync(groupId)).Returns(Task.FromResult(GetGroups().First())); var mockUnitOfWork = new Mock <IUnitOfWork>(); mockUnitOfWork.Setup(uow => uow.Groups).Returns(mockRepo.Object); var provider = new GroupProvider(mockUnitOfWork.Object, mockStudents.Object, mockEmployees.Object, CreateMapper()); // Act var result = await provider.GetByIdAsync(groupId); // Assert Assert.NotNull(result); Assert.Equal(groupId, result.Id); Assert.Equal("Test Group", result.Name); Assert.NotNull(result.Teacher); Assert.IsType <Employee>(result.Teacher); Assert.Equal("Test Employee", result.Teacher.Name); Assert.NotEmpty(result.Students); Assert.IsType <Student>(result.Students.First()); Assert.Equal("Test Student", result.Students.First().Name); }