中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

LindDotNetCore~Mock對實際(ji)應用中的意義

回到目錄

Mock在單元測試里的意義

Mock測試就是在測試過程中,對于某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以
便測試的測試方法。一個鬧鐘根據時間來進行提醒服務,如果過了下午5點鐘就播放音頻文件
提醒大家下班了,如果我們要利用真實的對象來測試的話就只能苦苦等到下午五點,然后把耳朵放在音箱
旁,我們應該利用mock對象[1] 來進行測試,這樣我們就可以模擬控制時間了,而不用苦苦等待時鐘轉
到下午5點鐘了。

為什么要用Mock

  1. 模擬接口的方法實現,方便測試,不需要額外建立新的類型
  2. 對集成測試很有必要
  3. 體現了面向接口編程的重要性和必要性
  4. 一般將數據層進行Mock,通過對數據的模擬,來實現業務的準確性

輸入參數和預期結果

我們可以定義兩個對象,輸入參數是我們給測試方法傳遞的原始數據,它通過計算邏輯生產新的結果;
而預期結果是我們從真實環境中通過輸入參數產生的正式結果;在經過mock測試之后,我們把真實的預
期(qi)結果和測試產生(sheng)的(de)結果進(jin)行對比,這樣可以驗證業務邏輯的(de)正確性!

使用方法

 //注冊一個mock對象,并重寫它的方法GetClosing,偽造它的返回結果
 _report_CashFlowDao = new Mock<IReport_CashFlowDao>();
 _report_CashFlowDao.Setup(p => p.GetClosing(270, new DateTime(2017, 10, 31))).Returns(() =>
 {
     return _sheetReportList;
 });

下面業務(wu)層方法依(yi)賴于它,通過構造方法把它注入進來

 _cashFlowService = new CashFlowService(_report_CashFlowDao.Object);
 _cashFlowService.HandleOrder(1139);

通過上面代碼我們完成的一個業務場景的mock過程,并最終調用了它的HandlerOrder方法,在這里我們與
數據庫交互的IReport_CashFlowDao對象是被模擬出來的,我們可以為它提供多份模擬數據,以便更客觀
的測試結果的正確性!
待續……
回到目錄

posted @ 2018-01-11 13:42  張占嶺  閱讀(790)  評論(0)    收藏  舉報