Sep. 22 20:19~21:50
10月份第八梯次【Design Patterns這樣學就會了–入門實作班】確定開課。現在學正是時候,明年開春可以馬上應用在新案子上,或是為過年後換高薪工作預做準備。早鳥優惠到10月3日截止。
***
接續〈Test Double(3):Dummy Object〉所提到的系統設計,這一集要套用Stub。
Test Stub的題目
先回憶一下系統的類別圖。
今天要練習的題目是「使用Stub實作IDoor,用以測試DoorCommand.execute的函數」。先看一下DoorCommand的原始碼,execute函數呼叫_door.getStatus()來檢查門的狀態,如果回傳值是「open」代表門被打開,則execute函數傳回狀態為CRITICAL的Result物件,並將Result物件的敘述字串設為「Door is open:…」。
Result物件的程式碼如下。
現在鄉民們要測試DoorCommand的execute函數,IDoor物件是它的DOC。如果使用真的IDoor物件來分別測試門被打開與關閉的這兩種情況,難道要真的在執行測試案例的時候放一扇門在旁邊,然後一下子打開、一下子關起來測試?顯然這不是一個好辦法,要怎樣才能通過下面這兩個測試案例呢?
實作Test Stub
方法很簡單,實作兩個Test Stub分別叫做StubOpenDoor與stubClosedDoor,前者的getStatus函數固定回傳「open」,後者回傳「not open」。
實作完成Test Stub之後,執行剛剛的測試案例,兩個都通過了。
***
友藏內心獨白:Stub的實作通常只要回傳寫死的資料就可以了。
沒有留言:
張貼留言