我們昨天介紹了WireMock,讓我們可以對外部的Api進行Mock,今天又回來介紹一下Test Double是甚麼。
圖片取自 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簡單來說就是一種幫助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