> For the complete documentation index, see [llms.txt](https://code.national-cat.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://code.national-cat.me/test/do-not-test-something.md).

# 哪些不用測試

1. 外部服務
2. 封裝的功能

### 外部服務

基本上，只要連到網路都算是外部服務。我通常會在交付程式碼之前會關掉網路再跑一次完整測試，因為有時會不小心觸發到不明顯的外部功能，像是發生異常例外會發出 Slack 通知，變更付款狀態要寄信給使用者。

還有，金流要怎麼測試？

我們永遠無法控制對方的程式碼怎麼設計，但我們能確保輸入的東西是對方預期的。金流的測試就只會測試輸入的部分，但不是真的打過去，而是透過 Mock/Spy 的方式去模擬金流 API 的輸入與輸出。

如果把網路關掉的情況下測試就會壞掉，那麼測試一定是錯的。

### 封裝的功能

函式只要不是 `public` 都算是封裝的功能。

雖然還是有辦法直接測試封裝功能，但測試程式需要以外部使用者的角度去測試，由於使用者不能直接呼叫 `priveate` 或 `protected` 方法就不會直接測試他們，而是透過 `public` 方法來旁敲側擊的方式去測試。
