對於我的測試,我需要嘲笑數據客戶端,在我的情況下他們是Oracle。如何模擬OracleConnection和OracleCommand?
我創建了我的數據訪問層允許這種在傳遞:
public static Int32? GetUserRoleId(string userName, OracleConnection cn, OracleCommand cmd)
我用的起訂量,但如果需要,我可以切換到另一種框架,而當我去創建Mock對象像這樣:
Mock<OracleConnection> mockOracleConnection = new Mock<OracleConnection>();
Mock<OracleCommand> mockOracleCommand = new Mock<OracleCommand>();
我得到這個錯誤:
Failure: System.ArgumentException : Type to mock must be an interface or an abstract or non-sealed class.
結論: 這比我想象的更簡單!只是嘲笑DAL層的功能是這樣的:
mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);