public async Task ForgotPasswordAsync_ShouldBeOkResult() { // Arrange var user = new User { Id = new UserId(), Email = "*****@*****.**" }; TestMock.UserService.Setup(userManager => userManager.FindByEmailAsync(user.Email)).ReturnsAsync(user).Verifiable(); TestMock.UserService.Setup(userManager => userManager.GeneratePasswordResetTokenAsync(user)).ReturnsAsync("code").Verifiable(); TestMock.ServiceBusPublisher.Setup(serviceBusPublisher => serviceBusPublisher.PublishAsync(It.IsAny <UserPasswordResetTokenGeneratedIntegrationEvent>())) .Returns(Task.CompletedTask) .Verifiable(); var controller = new PasswordController(TestMock.UserService.Object, TestMock.ServiceBusPublisher.Object); // Act var result = await controller.ForgotPasswordAsync( new ForgotPasswordRequest { Email = user.Email }); // Assert result.Should().BeOfType <OkResult>(); TestMock.UserService.Verify(userManager => userManager.FindByEmailAsync(user.Email), Times.Once); TestMock.UserService.Verify(userManager => userManager.GeneratePasswordResetTokenAsync(user), Times.Once); TestMock.ServiceBusPublisher.Verify( serviceBusPublisher => serviceBusPublisher.PublishAsync(It.IsAny <UserPasswordResetTokenGeneratedIntegrationEvent>()), Times.Once); }