iT邦幫忙

2025 iThome 鐵人賽

DAY 25
0
Software Development

每天一點 Ktor 3.0:一個月學會 Kotlin 後端開發系列 第 25

Day 25:使用依賴注入時,怎麼在測試使用 Mock 元件

  • 分享至 

  • xImage
  •  

在自動化測試的領域,有時候我們會希望測試時使用的元件跟專案實際上使用的元件不同

例如說,假設我們要測試商城的訂單功能,我們一定不會希望每次執行自動化測試時,都真的送出一張訂單

這就可以用前面說過的依賴注入,搭配上 mock 的方式,來進行自動化測試了

自動化測試時依賴注入

Ktor 已經提供了一個自己的依賴注入套件

可以參考依賴注入的文件 https://openaidoc.org/zh-Hant/ktor/server-dependency-injection

前面說過,依賴注入允許我們在調整程式邏輯時,透過切換新元件的方式轉換功能,而不是修改元件

在自動化測試時,這個功能更是重要。

我們可以將測試時,不是測試目標但是相關連的元件,在自動化測試時切換成一個假的元件。

這樣一來,我們在執行測試時,就可以只針對目標進行測試,而不會連相關元件故障都一起測出來。

測試的部分可以參考文件 https://openaidoc.org/zh-Hant/ktor/server-dependency-injection#%E4%BD%BF%E7%94%A8%E4%BE%9D%E8%B3%B4%E6%B3%A8%E5%85%A5%E9%80%B2%E8%A1%8C%E6%B8%AC%E8%A9%A6

比方說,假設我們在 Ktor 的 DI 內,設置了呼叫 GreetingService 時會拿到 GreetingServiceImpl

dependencies {
    provide<GreetingService> { GreetingServiceImpl() }
}

在測試時,我們可以將 GreetingService 對應的實作改成 MockGreetingService

fun test() = testApplication {
  application {
    dependencies.provide<GreetingService> {
      MockGreetingService()
    }
    loadServices()
  }
}

這樣一來,我們就不會在這次測試時碰到 GreetingServiceImpl 的內容了。

今天的部分就到這邊,我們明天見!


上一篇
Day 24:Ktor 的自動化測試
系列文
每天一點 Ktor 3.0:一個月學會 Kotlin 後端開發25
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言