Для моих тестов мне нужно смоделировать клиент данных, в моем случае это Oracle.
Я создал свой слой доступа к данным, чтобы разрешить его передачу в:
public static Int32? GetUserRoleId(string userName, OracleConnection cn, OracleCommand cmd)
Я использую Moq, хотя я могу переключиться на другую среду, если это необходимо, и когда я собираюсь создать объекты Mock, как это:
Mock<OracleConnection> mockOracleConnection = new Mock<OracleConnection>();
Mock<OracleCommand> mockOracleCommand = new Mock<OracleCommand>();
Я получаю эту ошибку:
Ошибка: System.ArgumentException: тип для макета должен быть интерфейсом или абстрактным или незапечатанным классом.
Вывод:
Это было проще, чем я думал! Просто смоделируйте функцию слоя DAL следующим образом:
mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);