Per i miei test ho bisogno di prendere in giro il client di dati, nel mio caso sono Oracle.Come posso prendere in giro un OracleConnection e OracleCommand?
Ho creato il mio livello di accesso ai dati per permettere che questo essere passato in:
public static Int32? GetUserRoleId(string userName, OracleConnection cn, OracleCommand cmd)
Sto usando Moq, se posso passare a un altro quadro, se necessario, e quando vado per creare gli oggetti Mock in questo modo:
Mock<OracleConnection> mockOracleConnection = new Mock<OracleConnection>();
Mock<OracleCommand> mockOracleCommand = new Mock<OracleCommand>();
ottengo questo errore:
Failure: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class.
Conclusione: Questo era più semplice di quanto pensassi! Basta prendere in giro la funzione di strato DAL in questo modo:
mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);