簡體   English   中英

如何模擬OracleConnection和OracleCommand?

[英]How can I mock an OracleConnection and OracleCommand?

對於我的測試,我需要模擬數據客戶端,在我的例子中,他們是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:類型為mock必須是接口或抽象或非密封類。

結論:這比我想象的更簡單! 只需像這樣模擬DAL層函數:

mockDao.Setup(a => a.GetUserRoleId(userName, It.IsAny<OracleConnection>(), It.IsAny<OracleCommand>())).Returns(1);

您可以進行更改以使用IDbConnection和IDbCommand(使用接口並使用工廠在主代碼中提供真實對象並在測試中提供模擬對象 - 通常使用依賴注入)

Moq只能模擬接口和虛擬方法。

你正試圖嘲笑一個密封的課:你可以看看這里

BTW:正如@Aliostad 所說 ,這樣的框架 - 我見過的大多數模擬框架 - 都只能模擬Interfaces / Abstract類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM