C++單元測試(12) - fake, stub, mock object
¶C++單元測試(12) - fake, stub, mock object
原文連結: https://darkblack01.blogspot.com/2015/12/c12-fake-stub-mock-object.html
移植時的最後更新日期: 2015-12-09T09:10:37.297+08:00
書裡怎麼寫
《C++ API 設計》,Ch 10.4.2中有介紹假物件(fake object)
一個具有功能性行為的物件,但採用更簡單的實作以幫助測試。例如:在記憶體中的檔案系統,模擬與本機磁碟上的互動
存根物件(stub object)
一個物件返迴預先準備或罐頭的回應。例如:一個ReadFileAsString()存根可能只是返回一個硬編碼的字串作為檔案內容,而不是讀取磁碟上該檔案名的檔案內容
模仿物件(mock object)
被檢測的物件具有預先程式化的行為,執行一系列方法的呼叫以做驗證。例如:一個模仿物件(或只是模擬)可指定GetValue()函數被呼叫時前兩次返回10,之後為20。
例如:它也可以驗證函式被呼叫了只有3次或至少5次,或在類別中的函式以一特定的順序被呼叫。
自己覺得
其實,能執行測試就足夠了。XD依書裡的定義,再簡化其詮釋方式,我自己的介紹如下
- 假物件(fake object): 簡化物件,以記憶體為存放資料的地方。
- 存根物件(stub object): hard code return value物件,以常數為資料。
- 模仿物件(mock object): 程式化行為物件,以一些邏輯決定取出資料。
其實,一個物件的各種function也都可以,也都不一定是哪一種物件。不過,我自己的實作也沒有很確切的去定這是什麼物件。也許在這一點妥協,不好,但是我還沒遇到吃虧的地方,總之,先讓測試跑起來吧!
發表於
tags:
{ TDD }