本文轉載自:衆成翻譯
譯者:iOSDevLog
連接:http://www.zcfy.cc/article/3809
原文:https://www.fullstackreact.com/30-days-of-react/day-22/react
測試套件是一項前期投資,可在系統的整個生命週期內得到回報。今天咱們將介紹測試的主題,並討論咱們能夠寫的不一樣類型的測試。git
好了, 閉上你的眼睛, 等一下, 不要... 你很難閉着眼睛閱讀, 可是想象一下, 你的應用正在接近你的第一個部署。github
它愈來愈近, 它變得無聊, 不斷添加在您的瀏覽器運行的功能,。後端
必定還有更好的辦法..。數組
當咱們談論測試時, 咱們討論的是自動創建和測量咱們的假設的過程, 而不是關於咱們的應用的功能斷言。瀏覽器
當咱們談論在React中的front-end(先後端) 測試時, 咱們指的是對咱們的Reac應用渲染什麼以及它如何響應用戶交互的斷言過程。dom
咱們將討論三種不一樣的軟件測試範例: 單元測試、功能測試和集成測試。函數
單元測試是指測試咱們的代碼中的各個部分 (或單元, 所以是名稱), 這樣咱們就能夠確信這些特定的代碼部分可以像咱們指望的那樣工做。工具
例如, 咱們的應用中已經有一些歸併器。這些歸併器由一個單一的函數組成, 咱們能夠在不一樣的場景下進行斷言。單元測試
在Reac中, 單元測試一般不須要瀏覽器, 能夠快速運行 (不須要寫入 DOM), 斷言自己一般是簡單而簡潔的。
咱們主要集中在回答這個問題: 用一組給定的輸入 (狀態和屬性), 輸出是否符合咱們對虛擬 dom 中 應該 的指望。在這種狀況下, 咱們正在測試渲染輸出。
經過功能測試, 咱們的重點是測試組件的行爲。例如, 若是咱們有一個帶有用戶登陸/註銷按鈕的導航欄, 咱們能夠測試咱們的指望:
給定一個登陸的用戶, 導航呈現一個帶有文本 Logout 的按鈕
因爲沒有登陸的用戶, 導航會呈現一個帶有文本 Login 的按鈕
功能測試一般是隔離運行的 (即測試組件功能而不須要應用的其他部分)。
最後, 咱們將研究的最後一種測試是集成測試。這種類型的測試測試咱們應用的整個服務, 並嘗試複製 end-user(終端用戶) 在使用咱們的應用時的體驗。
在速度和效率的順序上, 集成測試很是緩慢, 由於它須要對實時運行的瀏覽器運行預期, 由於單元和功能測試的運行速度會更快 (尤爲是在功能測試針對內存中的虛擬 dom 而不是實際的瀏覽器呈現的狀況下進行測試時)。
當測試響應組件時, 咱們將測試咱們對虛擬 dom 中包含的內容的指望, 以及實際 dom 中反映的內容。
咱們將使用一個名爲 jasmine 的測試庫來提供可讀的測試語言和斷言。
至於測試運行, 有一個通常性的辯論圍繞哪個測試亞軍是最容易/最有效的工做, 主要在mocha 和 jest。
咱們要在React中使用在咱們的冒險測試Jest, 由於它是 官方 (將信將疑) 測試員。咱們將要寫的大部分代碼將是在Jasmine。能夠隨意使用mocha 若是它是你的測試庫的選擇。
最後, 咱們將使用一個咱們不能離開的庫:Enzyme, 這使得在功能測試的更有樂趣。Enzyme提供了一些至關不錯的Reac測試實用功能, 使咱們的斷言寫得很容易。
明天, 咱們將獲得咱們的應用設置與測試工具就位, 以便咱們能夠開始測試咱們的應用, 並有信心它的工做是按咱們預期的。明天見!