Для моих тестов мне нужно имитировать клиента данных, в моем случае это 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>();
, я получаю эту ошибку:
Failure: System. ArgumentException: тип для имитации должен быть интерфейсом, абстрактным или незапечатанным классом.
Заключение: Это оказалось проще, чем я думал! Просто смоделируйте функцию слоя DAL следующим образом:
mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);