Para mis pruebas necesito burlarme del cliente de datos, en mi caso son Oracle.¿Cómo puedo simular una OracleConnection y OracleCommand?
He creado mi capa de acceso de datos para permitir que esto puede pasar en:
public static Int32? GetUserRoleId(string userName, OracleConnection cn, OracleCommand cmd)
estoy usando Moq, aunque puedo cambiar a otro marco, si es necesario, y cuando voy a crear los objetos Mock de esta manera:
Mock<OracleConnection> mockOracleConnection = new Mock<OracleConnection>();
Mock<OracleCommand> mockOracleCommand = new Mock<OracleCommand>();
consigo este error:
Failure: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class.
Conclusión: ¡Esto fue más simple de lo que pensaba! Sólo burlarse de la función de la capa DAL así:
mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);