iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
Kotlin

Kotlin魔法:Spring Boot 3的fp奇幻冒險系列 第 28

[城鎮] 測試的替身,Test Double

  • 分享至 

  • xImage
  •  

前情提要

我們昨天介紹了WireMock,讓我們可以對外部的Api進行Mock,今天又回來介紹一下Test Double是甚麼。

再次了解一下SUT跟DOC的關係

https://ithelp.ithome.com.tw/upload/images/20231013/20129702l78BMZafoO.png
圖片取自 https://kaczanowscy.pl/tomek/2011-01/testing-basics-sut-and-docs

我們要做測試時,SUT就是我們要測試的對象,而DOC則是SUT相依的服務,例如我們要測試我們的服務,而MongoDB就是DOC,MongoDB會影響我們的測試結果,因此我們會希望它是可以控制的! 比如說Mock它!,或是使用TestContainer。

想要測試SUT,但SUT又依賴於DOC,這很麻煩,我們會不知道到底是SUT實際錯了,還是DOC錯了造成SUT錯了? 這會讓我們的測試變得很複雜,想測試SUT還要DOC的幫助才行,所以我們昨天才會用WireMock把外部服務隔絕!

那麼我們想要測試SUT又不想被DOC影響,那麼就需要 Test Double!

Test Double

Test Double簡單來說就是一種幫助SUT可以被正確測試的作法,不用依靠真正的DOC。它就是一種模擬或假裝成真正DOC的一種測試方式。

但它還是有缺點的,畢竟是"假的",假的真不了,它終究是騙人的東西(X,因此我們還是得要有SUT以及DOC的整合測試,才不會出錯XD

總共有五種Test Double,讓我們可以一一的收集!

Dummy Objects
Fake Objects
Test Stubs
Test Spies
Mocks

總結

今天我們介紹了Test Double是甚麼!明天我們要接著繼續來介紹各種的Test Double!測試真的很重要,需要多了解一點測試的知識,讓我們的code quality可以有自信一點XD

畢竟替身可是很強的!

參考資料

http://teddy-chen-tw.blogspot.com/2014/09/test-double1.html


上一篇
[城鎮] Kotlin 與 WireMock的融合之術
下一篇
[城鎮] 五種Test Double - Dummy、Stub、Fake
系列文
Kotlin魔法:Spring Boot 3的fp奇幻冒險30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言