Причиной того, что тест, который вы предоставили в своем ответе (скопировано ниже), проходит, когда ваш оригинал терпит неудачу, состоит в том, что ваш оригинал ожидал вызова макета с конкретной ссылочной переменной, которую вы используете (в данном случае _employee).Возможно, вы ожидали, что Moq и .Verify () проверят на равенство, используя .equals () вместо ==?
В контексте тестируемого метода это правильно и желательно - на основе именитест, который вы просто ищете, чтобы проверить, что метод действительно отображает ваши входные данные в Employee и вызывает метод add репозитория.Если вы хотите убедиться, что данные не были потеряны в отображении, вы можете использовать It.Is (), который принимает функцию, которую вы можете использовать для подтверждения качества ввода (например, имени, соответствующего ожидаемому значению).
Если вы хотите просто проверить успешность сопоставления, вас может заинтересовать Проверка конфигурации Automapper как отдельный тест.
[Test]
public void AddEmployee_WhenCalled_AddEmployeeToDatabase()
{
_unitOfWork.Setup(uow => uow.Employees.Add(_employee));
_employeeBusiness = new EmployeeBusiness(_unitOfWork.Object);
var result = _employeeBusiness.AddEmployee(_employeeDto);
//_unitOfWork.Verify(uow => uow.Employees.Add(_employee), Times.Once); <-- This did not work
_unitOfWork.Verify(uow => uow.Employees.Add(It.IsAny<Employee>()), Times.Once); // <-- After changing this to It.IsAny<Employee>() it worked
_unitOfWork.Verify(uow => uow.Complete(), Times.Once);
}