簡體   English   中英

在googlemock中模擬文件寫入過程

[英]Mocking a file write process in googlemock

我剛剛開始使用googlemock進行C ++項目的模擬。 在我的例子中,我要測試的類會觀察一個寫入的文件,並且只要編寫了少量的新數據,它就會開始做一些工作。

我需要的是一個用於寫入文件的進程的模擬類。 據我所知,我需要以(對於googlemock)形式完全實現這種“寫入文件”功能,這是一個從中派生出模擬類的虛擬類? 模擬包裝最終用於測試和評估目的,對吧?

感謝幫助!

在谷歌模擬術語中,模擬是用於驗證您的測試代碼對它們執行某些操作的對象。

您描述的不是模擬,而是在測試操作下觸發代碼的實用程序類。

當您的類檢測到它所觀察的文件被寫入時,它會做什么? 例如,如果它執行對另一個對象的調用,那么您可以使用模擬對象來檢查是否使用正確的參數調用它,例如寫入文件的新大量數據。

我假設您的“觀察者”類的對象被通知,“writter”類的對象已經寫入了最少量的數據。 在這種情況下,您需要實現一個抽象類,它表示“writter”類的接口,並讓您真正的“writter”類繼承它並覆蓋其虛函數。 此外,讓您的模擬“writter”類實現繼承自此接口,並使用MOCK_METHODn創建模擬實現。

然后,讓“observer”類使用指向抽象類的指針從“writter”對象接收通知。 這樣,您可以使用依賴注入在測試階段通過創建模擬“writter”對象並將其地址傳遞給“observer”對象(而不是地址到真正的“writter”對象)並使用EXPECT_CALL設置測試用例來EXPECT_CALL在模擬對象上。

這是我能給出的最佳建議,因為您沒有向我們提供您的課程的詳細說明。

編輯:

關於真正的“writter”類的實現:你不必立即創建它,你現在可以使用mock類來測試“observer”類的行為,並將實現留待以后使用。 當然,您必須最終實現它,因為它必須在生產代碼中使用。

暫無
暫無

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

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