第 41 期 - 偷天換日:用 Stub 寫出不依賴資料庫的單元測試

本週專欄

偷天換日 — 善用 Stub 寫出不依賴資料庫的單元測試

說到單元測試,大家馬上想到的應該都是像 sum 這類沒有副作用的 pure function,他們就只是把參數拿來做一些運算,所以測試寫起來也簡單。但真實世界的應用往往不是如此,總有一些 function 會需要發出網路請求、或是對資料庫進行讀寫。所以今天的主題就是講怎麼用 Sinon.JS 的測試替身打破依賴,讓原本需要資料庫的單元測試,在沒有資料庫的環境下跑起來

前端開發

How I Cloned VSCode to use as my Portfolio

太厲害了各位,這個文章的作者用了 VSCode 的風格做了介紹自己的履歷!除此之外,他也在下方的留言區說了很棒的話我想分享給大家:「我們要盡可能的展現創造力,因為這些事與我們前端開發者有關!」他完全把自己的價值提高到思維方面,我覺得這非常重要。另外也附上我覺得很猛的作品,他是製造了一個遊戲去呈現自己。

Why React projects still use Redux in 2020?

記得之前也有分享過類似的文章,但是每隔一段期間就會有新人詢問相同的問題,那就是現在還需要學 Redux 嗎?

其實我不太理解為什麼一開始就要考慮他,因為當你學到 Hooks 或是先學到 Redux,這兩種寫法一定會給你不同的感受,你也會去思考或是意會到什麼情境會適合哪種解法,或是解決了什麼問題,而不是一開始就想說選一個學就好啦!而且我相信像文章說的:「當你進到一間公司,一定會有 50% 的機率會碰到 Redux。」

Functional Programming Paradigm in JavaScript

這篇文章把 JavaScript 函式編程講的真的很棒,他運用了簡單的範例以及清楚的解說,把每種概念都展示的很清楚,很適合剛學習 JavaScript 的初學者看,而如果已經相當熟練 JavaScript 的開發也能再看一次當做複習!

單元測試

純粹的好,Pure Function 知道

怎麼樣的 function 才算是 pure function?除了方便測試之外,pure function 在開發上還有什麼其他的益處?這些問題在這篇文章裡面都有講到。除此之外,作者也分享了對於 React、Redux 的想法,看完之後會覺得真的到處都有 pure function 的影子

Test Doubles — Fakes, Mocks and Stubs

看完專欄之後還覺得意猶未盡,想了解其他的測試替身嗎?這篇文介紹了 Fake、Mock 跟 Stub 兩種替身,並且分析了他們的使用時機

Best Practices for Spies, Stubs and Mocks in Sinon.js

Sinon.JS 是一個用來建立各種測試替身的 library,文中講了很多該如何在 Spy、Stub 跟 Mock 之間做選擇,也分享了很多 Sinon.JS 在使用時的 best practice

後端開發

Python初学者的自我修养,找到自己的方向

學習一門語言,不論是哪一個應用場景都不只一個方向,所以其中一個重要的東西,就是方向的選擇。而 Python 在各個領域中,跟其他語言的特性也有差異,以 Web 為例,Python 的優勢在於快而敏捷。機器學習對 Python 的要求只需要會基本的語法,但是背後的知識體系,卻是龐大的:例如:推薦、搜尋、廣告、NLP … 等等。

1万+接口测试与管理的进阶之路

接口是應用開發中必然存在的產物,無論你是開發,測試還是運維人員,你都會與接口產生千絲萬縷的聯繫。開發是接口的創造者,他們定義了接口,同時帶來了他們血肉之主軸。測試是接口的健康守護者,無論在哪個階段,都在默默的為他們發現傷害他們健康的“寄生蟲”(致BUG)。聽了我的YY,有沒有覺得接口是有生命的,如果沒有,那麼可以看下下圖

一本《Redis 深度历险》,我能躺挣多少钱?

有人問我,你之前的小冊才賣 19.9 元,而一本紙書居然要定價 79 元,你是不是膨脹了?我很想告訴他的是這一本紙書作者的抽成只佔 7%,如果是黑白印刷,能抽成 8%。但是為了保持好的閱讀體驗,還是堅持了全彩印刷。雖然我明白抽成的額度少了,同時因為彩印價格偏高會導致銷量相對較高,最終會導致總收入下降。

DevOps

Jenkins graduates in the Continuous Delivery Foundation

Jenkins 是一個已經在業界存在十年以上的老前輩了,加入 CI/CD 組織然後說他畢業了,感覺有點怪怪的,不知道算不算是在洗學歷XD 不過從畢業感言裡面找到了 Public Roadmap,以後可以從這邊知道老爺爺準備要帶給大家什麼新玩意兒 = =+

Pysa: An open source static analysis tool to detect and prevent security issues in Python code

Pysa (Python Static Analyzer) 是 Facebook 最近開源的靜態程式碼分析工具,FB 建造並且使用該工具來檢測和預防 Python 程式碼中的安全性和隱私相關問題。FB 中最大的 Python 程式碼 Repository 是用來運行 Instagram 服務,裡面有數百萬行程式碼,Pysa 可以根據開發人員提交的程式碼在一個小時內就提拱分析結果,而不用花費幾週甚至數個月來手動檢查數百萬行的程式碼,這些快速被找到的問題就可以被避免有問題的程式碼被 Merge 進入 Repository 的 Main Branch 中,而且也會根據問題去做分類,發送通知給開發人員或是安全工程師

How we learned to improve Kubernetes CronJobs at Scale [Part I] [Part II]

Lyft 使用了兩篇的文章篇幅來述說公司內部使用 #Kubernetes 內建的 CronJob 遇到的痛點與解決的方式,目前 Lyft Production K8S 環境內有將近五百個 CronJob,每個小時會被執行 1500 多次,在使用 K8S 之前,這些 Job 本來是使用 Linux 內建的 Cron 機制,然後透過 CM 工具來做管理;像許多人一樣選擇 K8S 的原因一樣,因為其最大的好處之一是可以有效地利用資源,因此 Lyft 便開始將這些 Cron Job 容器化然後遷移到 K8S 中,畢竟傳統的 Linux Cron 機制當機器沒有在運行任務的時候,可能有 99% 的資源是閒置沒有被使用到的,但是使用 K8S CronJob 之後,所有的 CPU 和 Memory…等資源可以被所有的 Cron Job 有效的利用

不過紙上談兵總是比較簡單的,實際跑下去就遇到問題了,因為 K8S 的 CronJob 在 #啟動所花的時間 和 #故障處理 上跟 Liunux Cron 有一些關鍵性上的差異,所以 Lyft 詳細的分析為什麼會造成這樣的原因,然後透過 1) 增加 CronJob 的可觀察性,方便開發者查找問題,維運者監控,2) 建立工具讓 K8S CronJob 的臨時調用變得更容易,3) 把 K8S 一些內部本身長期存在的問題給修復掉,所以雖然 K8S CronJob 並非完美的解決方案,但如果願意花時間弄的話,他還是可以完成大規模的工作,詳細監控跟解決方式可以參閱內容,這邊只有大概提一下大綱

社群活動

Modern Web 2020 徵稿中

一年一度的 Modern Web 持續徵稿中,這次採用 Webinar 線上研討會的型式呈現,熱愛技術的你不能錯過。

Pycon 2020 一般票熱賣中

Pycon 2020 早鳥票已結束售票,其餘票種於「 8 月 21 日」結束販售。但是要買票還是要動作快喔~!😇😇

Kubernetes Summit 2020 議程公布中

沒想到今年還有 Kubernetes Summit 可以參加,看起來官方已經開始慢慢把議程放上去了~

Taiwan CDK Meetup #2

Taiwan CDK Meetup 這週準備舉辦第二次啦~不過聽說票在一瞬間就被搶購一空了 T_T

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!

Curators:

  • @GQSM - Hi!我是神 Q 超人,一個先衝再說的男人。
  • @Larry850806 - 我是 Larry,傳說中的 0.1 倍工程師!
  • @LukaJoJo - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術

Feedback

本週呈現主題方式做了一些改變,希望讓讀者能夠更快速精準的找到自己要的資訊。也加入社群活動這個區塊,每週更新社群活動的資訊。如果有任何建議,歡迎私訊 星巴哥技術週刊 FB 粉絲專頁 與我們聯繫。