public async void CreateDeveloperTest( Status expectedStatus, bool validCPF = false ) { var developerDto = new DeveloperCreateDto { Name = RandomHelper.RandomString(), Login = RandomHelper.RandomString(), Password = RandomHelper.RandomNumbers(), CPF = RandomHelper.RandomNumbers(11) }; var developersPersisted = new List <Developer>(); _developerRepository.Setup(d => d.CreateAsync(Capture.In(developersPersisted))); _developerRepository.Setup(d => d.ExistByLoginAsync(developerDto.Login, default)) .ReturnsAsync(expectedStatus == Status.Conflict); _mockyRepository.Setup(m => m.ValidateCPFAsync(developerDto.CPF)) .ReturnsAsync(new Result <bool>(validCPF)); var service = new DeveloperService(_developerRepository.Object, _workRepository.Object, _mockyRepository.Object); var result = await service.CreateDeveloperAsync(developerDto); Assert.Equal(expectedStatus, result.Status); if (expectedStatus == Status.Success) { _developerRepository.Verify(d => d.CreateAsync(It.IsAny <Developer>()), Times.Once); _mockyRepository.Verify(d => d.ValidateCPFAsync(developerDto.CPF), Times.Once); var developer = developersPersisted.Single(); Assert.Equal(developerDto.Name, developer.Name); Assert.Equal(developerDto.Login, developer.Login); Assert.Equal(developerDto.CPF, developer.CPF); Assert.Equal(MD5Crypto.Encode(developerDto.Password), developer.PasswordHash); } else { _developerRepository.Verify(d => d.CreateAsync(It.IsAny <Developer>()), Times.Never); } }