Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Snapshot Everything @ Modern Web 2017

Snapshot Everything @ Modern Web 2017

Snapshot Test 是 Facebook 於2016年發佈的全新測試觀念與工具,本質上是屬於 Regression Test 的範疇,實質上它提倡的是「寫最少的測試碼,做最有效的測試」。帶您快速的認識這個測試學派與起手式,並檢閱導入團隊九個月來的效益與心得。

Aaron Chuo

August 11, 2017
Tweet

More Decks by Aaron Chuo

Other Decks in Programming

Transcript

  1. Aaron / ੜᇰ S E N A P S H

    O T E V R Y T H I N G 從元件測試點燃新⼀代測試觀念
  2. Aaron (a.k.a ੜᇰ) 籆ᤅ獮ᒒঁ CodePen ሻ疑 GitHub ᤋ݋ 犨肬ෝ Taroko

    Software 砾犨 Tech Lead 癲獋㮆 Team ጱૡ݋ https://codepen.io/aaronchuo/
  3. 獮ᒒ介手ጱ獊碝ᶐ޸牫 • Snapshot Test 犋ݝฎӞ圵介手ොဩ • Snapshot 犋ฎ֦犥傶ጱ̿౼瑽̀ • Snapshot

    犋ฎݚӞॺ介手ૡٍ • Snapshot ䷱磪䋊聜౮๜ • Snapshot 墋玕 Assertion • Snapshot य़ଏ仂੝介手嘨 • Snapshot य़ଏ仂੝䌃介手ጱ碻樌 • Snapshot य़ଏ仂੝介手ጱ耆卓膏蕦褾ଶ
  4. Snapshot Test ጱ羊ᐟ • 仂੝介手嘨ጱ size • 仂੝䌃介手ጱ碻樌౮๜ • 褔犵ๅ硬介手嘨ጱ毱ሲ

    • ๅ磪硳瑿瞟ڊ覍毆๗ጱ୽段 • य़ଏ൉䥮介手薟荠ሲ • 獮ᒒૡ纷䒍虋஑ๅ盠禼
  5. • via yarn:
 
 • via npm:
 
 ਞ蕕 $

    yarn add --dev jest-cli enzyme enzyme-to-json $ npm i --save-dev jest-cli enzyme enzyme-to-json
  6. • react < 15.5.0
 
 • react >= 15.5.0
 


    ਞ蕕 $ yarn add --dev react-addons-test-utils $ yarn add --dev react-test-renderer
  7. • Jest 犋஠䌃犨֜戔ਧܨݢֵአ • ֕磪碻狡౯㮉襑ᥝ蝱Ӟྍጱֵਙๅঅአ:
 
 戔ਧ "jest": { "roots":

    [ "<rootDir>/tests/", "<rootDir>/src/" ], "testRegex": "\\.(spec|e2e|snapshot)\\.js$", "coverageReporters": ["json", "html", "text"], "browser": true, "moduleNameMapper": { "components(.*)": "<rootDir>/src/components$1", "utils(.*)": "<rootDir>/src/utils$1", "constants(.*)": "<rootDir>/src/constants$1", "containers(.*)": "<rootDir>/src/containers$1", "reducers(.*)": "<rootDir>/src/reducers$1", "routing(.*)": "<rootDir>/src/routing$1", "actions(.*)": "<rootDir>/src/actions$1", "sagas(.*)": "<rootDir>/src/sagas$1", "mock-data": "<rootDir>/tests/__mocks__/mockData.js" } }
  8. Assertion • ֵአ Snapshot 盅ಅ磪ጱ assertion 裾蝡䰬:
 
 
 •

    ℂ種ޞ獨 toEqual(), toBe(), toWhatever.. !? expect(shallow(<Foo />)).toMatchSnapshot();
  9. አ Snapshot 狶 Functional Test • Snapshot Serializer • አ

    serializer 㬵墋玕介手嘨 • ᛔ૩䌃Ӟඪ serializer 㬵ᛔ懪 snap • 玲դ functional test • ๅग़ጱݢ胼௔...
  10. Wanted • Front-end Engineer • Senior Front-end Engineer • Rails

    Developer • iOS Developer • Android Developer • UI Designer