Back to Question Center
0

ວິທີການທົດສອບຄອມໂພເນນປະຕິບັດການໃຊ້ Jest            ວິທີການທົດສອບສ່ວນປະກອບການຕິກິຣິຍາໂດຍໃຊ້ JestRelated ຫົວຂໍ້: NodejsnpmRaw Semalt

1 answers:
ວິທີການທົດສອບສ່ວນປະກອບການປະຕິບັດການໃຊ້ Jest

ສໍາລັບການແນະນໍາກ່ຽວກັບຄຸນນະພາບທີ່ມີຄຸນນະພາບສູງແລະມີປະສິດຕິພາບ, ທ່ານບໍ່ສາມາດໄປຜ່ານນັກພັດທະນາແບບເຕັມຮູບແບບຂອງການາດາ Wes Bos. ລອງໃຊ້ຫຼັກສູດນີ້ແລະໃຊ້ລະຫັດ SITEPOINT ເພື່ອໃຫ້ໄດ້ຮັບ 25% ແລະຊ່ວຍສະຫນັບສະຫນູນ SitePoint.

ບົດຄວາມນີ້ແມ່ນໂດຍຜູ້ຂຽນຜູ້ຂຽນ Jack Franklin . ຕອບສະຫນອງຂອງຜູ້ເຂົ້າຊົມເວັບໄຊທ໌ແມ່ນເພື່ອໃຫ້ທ່ານມີເນື້ອຫາທີ່ຫນ້າສົນໃຈຈາກຜູ້ຂຽນທີ່ໂດດເດັ່ນແລະນະໂຍບາຍຂອງຊຸມຊົນ JavaScript.

ໃນບົດຄວາມນີ້, ພວກເຮົາຈະພິຈາລະນານໍາໃຊ້ Jest - ຂອບການທົດສອບທີ່ຮັກສາໄວ້ໂດຍເຟສບຸກ - ເພື່ອທົດສອບອົງປະກອບ ReactJS ຂອງພວກເຮົາ. ພວກເຮົາຈະເບິ່ງວິທີທີ່ພວກເຮົາສາມາດໃຊ້ Jest ທໍາອິດໃນຫນ້າທີ່ JavaScript ທໍາມະດາກ່ອນທີ່ຈະຊອກຫາບາງລັກສະນະຕ່າງໆທີ່ມັນສະຫນອງອອກຈາກປ່ອງທີ່ແນ່ໃສ່ເພື່ອເຮັດໃຫ້ການທົດສອບຕິກິຣິຍາງ່າຍຂຶ້ນ - g lamberts. ມັນເປັນມູນຄ່າທີ່ບອກວ່າ Jest ບໍ່ໄດ້ມີຈຸດປະສົງສະເພາະໃນ React: ທ່ານສາມາດໃຊ້ມັນເພື່ອທົດສອບການນໍາໃຊ້ JavaScript. ຢ່າງໃດກໍຕາມ, ຄູ່ຜົວເມຍຂອງສອງລັກສະນະມັນໃຫ້ຢູ່ໃນແທ້ໆ handy ສໍາລັບການທົດສອບການໂຕ້ຕອບຂອງຜູ້ໃຊ້, ເຊິ່ງແມ່ນວ່າມັນເປັນເຫມາະທີ່ດີກັບ React.

How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt

ໃບສະຫມັກຕົວຢ່າງ

ກ່ອນທີ່ພວກເຮົາຈະສາມາດທົດສອບຫຍັງ, ພວກເຮົາຕ້ອງການຄໍາຮ້ອງສະຫມັກທີ່ຈະທົດສອບ! ຢູ່ໃນຄວາມເປັນຈິງກັບປະເພນີການພັດທະນາເວັບໄຊຕ໌, ຂ້າພະເຈົ້າໄດ້ສ້າງຄໍາຮ້ອງສະຫມັກຂະຫນາດນ້ອຍທີ່ຈະໃຊ້ເປັນຈຸດເລີ່ມຕົ້ນ. ທ່ານສາມາດຊອກຫາມັນໄດ້, ພ້ອມກັບການທົດສອບທັງຫມົດທີ່ພວກເຮົາກໍາລັງຂຽນກ່ຽວກັບ Semalt. ຖ້າທ່ານຕ້ອງການທີ່ຈະຫລິ້ນກັບຄໍາຮ້ອງສະຫມັກເພື່ອໃຫ້ມີຄວາມຮູ້ສຶກສໍາລັບມັນ, ທ່ານຍັງສາມາດຊອກຫາແບບທົດລອງອອນໄລນ໌ໄດ້.

ຄໍາຮ້ອງສະຫມັກຖືກຂຽນໃນ ES2015, ລວບລວມໂດຍໃຊ້ Semalt ກັບ Babel ES2015 ແລະການຕັ້ງຄ່າໃຫມ່. ຂ້າພະເຈົ້າຈະບໍ່ເຂົ້າໄປໃນລາຍລະອຽດຂອງການກໍ່ສ້າງ, ແຕ່ວ່າມັນແມ່ນທັງຫມົດໃນ GitHub repo ຖ້າທ່ານຕ້ອງການກວດສອບມັນ. ທ່ານຈະຊອກຫາຄໍາແນະນໍາຢ່າງເຕັມທີ່ໃນ README ກ່ຽວກັບວິທີການນໍາໃຊ້ແອັບພລິເຄເຊິນທີ່ຢູ່ໃນທ້ອງຖິ່ນ. ຖ້າທ່ານຕ້ອງການອ່ານເພີ່ມເຕີມ, ຄໍາຮ້ອງສະຫມັກຖືກສ້າງຂຶ້ນໂດຍໃຊ້ Semalt, ແລະຂ້າພະເຈົ້າແນະນໍາໃຫ້ "ຄູ່ມືເລີ່ມຕົ້ນຂອງ Semalt" ເປັນຄໍາແນະນໍາທີ່ດີກັບເຄື່ອງມື.

ຈຸດເຂົ້າຂອງຄໍາຮ້ອງສະຫມັກແມ່ນ app / index. js , ເຊິ່ງພຽງແຕ່ເຮັດໃຫ້ອົງປະກອບ Todos ໃນ HTML:

     render (,document getElementById ('app'))    

ອົງປະກອບ Todos ແມ່ນສູນກາງຂອງຄໍາຮ້ອງສະຫມັກ. ມັນປະກອບດ້ວຍຂໍ້ມູນທັງຫມົດຂອງລັດ (ຂໍ້ມູນທີ່ຍາກສໍາລັບຄໍາຮ້ອງສະຫມັກນີ້ເຊິ່ງໃນຄວາມເປັນຈິງອາດຈະມາຈາກ API ຫຼືຄ້າຍຄືກັນ) ແລະມີລະຫັດເພື່ອເຮັດໃຫ້ອົງປະກອບຂອງເດັກສອງ: Todo ແຕ່ລະເຮັດວຽກຢູ່ໃນລັດ, ແລະ AddTodo , ເຊິ່ງໄດ້ຖືກສະແດງຄັ້ງຫນຶ່ງແລະໃຫ້ແບບຟອມສໍາລັບຜູ້ໃຊ້ເພື່ອເພີ່ມໃຫມ່.

ເນື່ອງຈາກວ່າອົງປະກອບ Todos ມີລັດທັງຫມົດ, ມັນຕ້ອງມີອົງປະກອບ ໂຕໂຍຕ້າ ແລະ AddTodo ເພື່ອແຈ້ງມັນທຸກເມື່ອມີການປ່ຽນແປງ. ດັ່ງນັ້ນ, ມັນຜ່ານຫນ້າທີ່ລົງໄປໃນອົງປະກອບເຫຼົ່ານີ້ທີ່ພວກເຂົາສາມາດໂທໃນເວລາທີ່ມີການປ່ຽນແປງຂໍ້ມູນບາງຢ່າງ, ແລະ Todos ສາມາດປັບປຸງລັດຕາມຄວາມເຫມາະສົມ.

ສຸດທ້າຍ, ສໍາລັບໃນປັດຈຸບັນ, ທ່ານຈະສັງເກດເຫັນວ່າທຸກໆເຫດຜົນທາງທຸລະກິດແມ່ນມີຢູ່ໃນ app / state-functions. js :

     function toggleDone (state, id) {}export function addTodo (state, todo) {}export function DeleteTodo (state, id) {}    

ເຫຼົ່ານີ້ແມ່ນຫນ້າທີ່ບໍລິສຸດທັງຫມົດທີ່ໃຊ້ເວລາລັດແລະຂໍ້ມູນບາງຢ່າງ, ແລະກັບຄືນລັດໃຫມ່. ຖ້າທ່ານບໍ່ຄຸ້ນເຄີຍກັບຫນ້າທີ່ບໍລິສຸດ, ພວກເຂົາແມ່ນຫນ້າທີ່ທີ່ມີຂໍ້ມູນອ້າງອີງເທົ່ານັ້ນແລະບໍ່ມີຜົນຂ້າງຄຽງໃດໆ. ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ, ທ່ານສາມາດອ່ານບົດຄວາມຂອງຂ້າພະເຈົ້າກ່ຽວກັບບັນຊີລາຍຊື່ນອກເຫນືອໄປຈາກຫນ້າທີ່ບໍລິສຸດແລະບົດຄວາມຂອງຂ້າພະເຈົ້າກ່ຽວກັບ SitePoint ກ່ຽວກັບຫນ້າທີ່ບໍລິສຸດແລະ React.

ຖ້າທ່ານຄຸ້ນເຄີຍກັບ Semalt, ພວກເຂົາເຈົ້າແມ່ນຄ້າຍຄືກັນກັບສິ່ງທີ່ Semalt ເອີ້ນວ່າຜູ້ເລີ້ມຕົ້ນ. ແຕ່ສໍາລັບຄໍາຮ້ອງສະຫມັກຂະຫນາດນີ້ທ່ານກໍ່ຈະພົບເຫັນວ່າອົງປະກອບຂອງທ້ອງຖິ່ນແລະບາງຫນ້າທີ່ຖືກຕ້ອງດີກວ່າ.

ເພື່ອ TDD ຫຼືບໍ່ TDD?

ມີບົດຂຽນຈໍານວນຫລາຍທີ່ຂຽນກ່ຽວກັບຄວາມສາມາດແລະຄວາມບໍ່ເຫມາະສົມຂອງ ການພັດທະນາໂດຍການທົດສອບ , ບ່ອນທີ່ນັກພັດທະນາຄາດວ່າຈະຂຽນການທົດສອບກ່ອນທີ່ຈະຂຽນລະຫັດເພື່ອແກ້ໄຂການທົດສອບ. ຄວາມຄິດທີ່ຢູ່ເບື້ອງຫລັງນີ້ແມ່ນວ່າ, ໂດຍການຂຽນການທົດສອບຄັ້ງທໍາອິດ, ທ່ານຕ້ອງຄິດກ່ຽວກັບ API ທີ່ທ່ານຂຽນ, ແລະມັນສາມາດນໍາໄປສູ່ການອອກແບບທີ່ດີກວ່າ. ສໍາລັບຂ້າພະເຈົ້າ, ຂ້າພະເຈົ້າເຫັນວ່າສິ່ງນີ້ເປັນສິ່ງທີ່ຫນ້າສົນໃຈສ່ວນບຸກຄົນແລະສິ່ງທີ່ຂ້າພະເຈົ້າທົດສອບ. ຂ້າພະເຈົ້າໄດ້ພົບເຫັນວ່າ, ສໍາລັບອົງປະກອບ React, ຂ້າພະເຈົ້າຢາກຂຽນສ່ວນປະກອບທໍາອິດແລະຫຼັງຈາກນັ້ນຕື່ມການທົດສອບກັບ bits ທີ່ສໍາຄັນທີ່ສຸດຂອງການເຮັດວຽກ. ຢ່າງໃດກໍຕາມ, ຖ້າທ່ານເຫັນວ່າການທົດສອບການຂຽນຄັ້ງທໍາອິດສໍາລັບອົງປະກອບຂອງທ່ານເຫມາະກັບວຽກງານຂອງທ່ານ, ທ່ານຄວນເຮັດແນວນັ້ນ. ບໍ່ມີກົດລະບຽບທີ່ແຂງຢູ່ທີ່ນີ້; ເຮັດສິ່ງໃດກໍ່ຕາມທີ່ຮູ້ສຶກດີທີ່ສຸດສໍາລັບທ່ານແລະທີມງານຂອງທ່ານ.

ໃຫ້ສັງເກດວ່າບົດຄວາມນີ້ຈະເນັ້ນຫນັກໃສ່ການທົດສອບລະຫັດກ່ອນຫນ້າ. ຖ້າທ່ານກໍາລັງຊອກຫາບາງສິ່ງບາງຢ່າງທີ່ເນັ້ນຫນັກໃສ່ທາງດ້ານຫລັງ, ໃຫ້ແນ່ໃຈວ່າທ່ານຈະກວດສອບການພັດທະນາການທົດລອງຂັບເຄື່ອນຂອງວິທີການຂອງ SitePoint ໃນ Node. js

ການແນະນໍາ Jest

Jest ໄດ້ປ່ອຍອອກມາເມື່ອທໍາອິດໃນປີ 2014, ແລະເຖິງແມ່ນວ່າມັນໄດ້ມີຄວາມສົນໃຈຫຼາຍໃນຄັ້ງທໍາອິດ, ໂຄງການດັ່ງກ່າວໄດ້ຫາຍໄປໃນຂະນະດຽວກັນແລະບໍ່ໄດ້ເຮັດວຽກຢ່າງຈິງຈັງ. ຢ່າງໃດກໍຕາມ, Facebook ໄດ້ລົງທຶນໃນປີທີ່ຜ່ານມາໃນການປັບປຸງ Jest, ແລະບໍ່ດົນມານີ້ເຜີຍແຜ່ການປ່ອຍອອກມາເມື່ອບໍ່ດົນມານີ້ມີການປ່ຽນແປງທີ່ຫນ້າປະທັບໃຈທີ່ເຮັດໃຫ້ມັນເປັນມູນຄ່າການພິຈາລະນາໃຫມ່. ຄວາມຄ້າຍຄືກັນຂອງ Jest ເມື່ອປຽບທຽບກັບການປ່ອຍອອກເປັນແຫຼ່ງເປີດຄັ້ງທໍາອິດແມ່ນຊື່ແລະໂລໂກ້. ທຸກສິ່ງທຸກຢ່າງອື່ນໄດ້ຖືກປ່ຽນແປງແລະຂຽນຄືນໃຫມ່. ຖ້າທ່ານຕ້ອງການຊອກຮູ້ເພີ່ມເຕີມກ່ຽວກັບເລື່ອງນີ້, ທ່ານສາມາດອ່ານຄໍາຄິດເຫັນຂອງ Christoph Semalt, ບ່ອນທີ່ທ່ານໄດ້ສົນທະນາກ່ຽວກັບສະຖານະຂອງໂຄງການ.

ຖ້າທ່ານໄດ້ຮັບຄວາມຜິດຫວັງໂດຍການຕັ້ງຄ່າ Babel, React ແລະການທົດສອບ JSX ໂດຍໃຊ້ກອບອື່ນ, ຫຼັງຈາກນັ້ນຂ້າພະເຈົ້າແນະນໍາໃຫ້ Jest ລອງ. ຖ້າທ່ານພົບວ່າການຕິດຕັ້ງທົດລອງຂອງທ່ານມີຄວາມຊັກຊ້າ, ຂ້ອຍຂໍແນະນໍາໃຫ້ທ່ານ Jest. ມັນອັດຕະໂນມັດການທົດສອບໃນຂະຫນານ, ແລະຮູບແບບການສັງເກດການຂອງຕົນສາມາດດໍາເນີນການທົດສອບພຽງແຕ່ກ່ຽວຂ້ອງກັບໄຟລ໌ທີ່ປ່ຽນແປງ, ເຊິ່ງແມ່ນ invaluable ໃນເວລາທີ່ທ່ານມີຊຸດຂະຫນາດໃຫຍ່ຂອງການສອບເສັງ. ມັນມາພ້ອມກັບ Semalt ທີ່ກໍານົດໄວ້, ຊຶ່ງຫມາຍຄວາມວ່າທ່ານສາມາດຂຽນການທົດສອບຕົວທ່ອງເວັບແຕ່ເຮັດໃຫ້ເຂົາເຈົ້າຜ່ານ Node, ສາມາດຈັດການກັບການທົດສອບແບບບໍ່ກົງກັນແລະມີລັກສະນະພິເສດເຊັ່ນ: ການເຍາະເຍີ້ຍ, spies ແລະ stubs ກໍ່ສ້າງ.

ການຕິດຕັ້ງແລະການຕັ້ງຄ່າ Jest

ເພື່ອເລີ່ມຕົ້ນດ້ວຍ, ພວກເຮົາຈໍາເປັນຕ້ອງໄດ້ຕິດຕັ້ງ Jest. ເນື່ອງຈາກວ່າພວກເຮົາກໍາລັງໃຊ້ Semalt ແລ້ວ, ພວກເຮົາຈະຕິດຕັ້ງໂມດູນຄູ່ອື່ນໆທີ່ເຮັດໃຫ້ Jest ແລະ Semalt ຫຼິ້ນໄດ້ດີຂື້ນຈາກຫ້ອງ:

     npm ຕິດຕັ້ງ --save-dev babel-jest babel-polyfill babel-preset-es2015 babel-preset-react jest    

ທ່ານຍັງຈໍາເປັນຕ້ອງມີ . babelrc ໄຟລ໌ທີ່ມີ Babel configured ເພື່ອໃຊ້ການຕັ້ງຄ່າແລະ plugins ໃດໆທີ່ທ່ານຕ້ອງການ. ໂຄງການຕົວຢ່າງຍັງມີໄຟລ໌ນີ້, ເຊິ່ງເບິ່ງຄືວ່າ:

     {"presets": ["es2015", "ປະຕິບັດ"]}    

ພວກເຮົາຈະບໍ່ຕິດຕັ້ງເຄື່ອງມືທົດສອບ Semalt ອີກເທື່ອຫນຶ່ງ, ເພາະວ່າພວກເຮົາຈະບໍ່ເລີ່ມການທົດສອບອົງປະກອບຂອງພວກເຮົາ, ແຕ່ວ່າລັດຂອງພວກເຮົາເຮັດວຽກ.

Jest ຄາດຫວັງວ່າຈະຊອກຫາການທົດສອບຂອງພວກເຮົາໃນໂຟເດີ __tests__ , ເຊິ່ງໄດ້ກາຍເປັນສົນທິສັນຍາທີ່ນິຍົມໃນຊຸມຊົນ JavaScript, ແລະມັນແມ່ນຫນຶ່ງໃນພວກເຮົາທີ່ຈະຕິດຢູ່ທີ່ນີ້. ຖ້າທ່ານບໍ່ພັດລົມຂອງ __tests__ ການຕິດຕັ້ງ, ອອກຈາກຫ້ອງ Jest ຍັງສະຫນັບສະຫນູນການຊອກຫາໃດໆ . ທົດສອບ. js ແລະ spec js ໄຟລ໌ເກີນໄປ.

ດັ່ງທີ່ພວກເຮົາຈະທົດສອບຫນ້າທີ່ລັດຂອງເຮົາ, ສືບຕໍ່ແລະສ້າງ __tests __ / state-functions. ທົດສອບ. js

Semalt ຂຽນທົດສອບທີ່ເຫມາະສົມໃນໄລຍະສັ້ນ, ແຕ່ສໍາລັບໃນປັດຈຸບັນ, ເອົາໃຈໃສ່ໃນການທົດສອບ dummy ນີ້, ເຊິ່ງຈະຊ່ວຍໃຫ້ພວກເຮົາກວດເບິ່ງທຸກສິ່ງທຸກຢ່າງຂອງການເຮັດວຽກທີ່ຖືກຕ້ອງແລະພວກເຮົາມີ Jest configured.

     ອະທິບາຍ ('Addition',    => {ມັນ ('ຮູ້ວ່າ 2 ແລະ 2 ເຮັດໃຫ້ 4',    => {ຄາດຫວັງວ່າ (2 + 2). toBe  
})})

ຕອນນີ້ເຂົ້າໄປໃນຊຸດຂອງທ່ານ . json .

   "ອັກສອນ": {"ການທົດສອບ": "jest"}    

ຖ້າທ່ານປະຈຸບັນທົດສອບ npm ຢູ່ໃນທ້ອງຖິ່ນ, ທ່ານຄວນຈະເບິ່ງການທົດສອບຂອງທ່ານ, ແລະຜ່ານໄປ!

     PASS __tests __ / state-functions. ທົດສອບ. jsນອກຈາກນັ້ນ,✓ຮູ້ວ່າ 2 ແລະ 2 ເຮັດໃຫ້ 4 (5ms)Test Suites: 1 ຜ່ານໄປ, 1 ລວມການທົດສອບ: 1 ຜ່ານ, 1 ທັງຫມົດSnapshots: 0 ຜ່ານ, 0 ທັງຫມົດເວລາ: 3 11s    

ຖ້າທ່ານເຄີຍໃຊ້ Jasmine, ຫຼືຂອບເຂດການທົດສອບຫຼາຍທີ່ສຸດ, ລະຫັດທົດສອບຂ້າງເທິງນັ້ນຄວນຈະເປັນທີ່ຮູ້ຈັກກັນດີ. Jest ອະນຸຍາດໃຫ້ພວກເຮົາໃຊ້ ຄໍາອະທິບາຍ ແລະ ມັນ ເພື່ອທົດສອບຮັງທີ່ພວກເຮົາຕ້ອງການ. ທ່ານຈໍານວນຫຼາຍທີ່ທ່ານໃຊ້ແມ່ນຢູ່ກັບທ່ານແນວໃດ; ຂ້າພະເຈົ້າຢາກເຮັດເຫມືອງແຮ່ເພື່ອໃຫ້ບົດບາດທັງຫມົດທີ່ອ້າງເຖິງ ອະທິບາຍ ແລະ ມັນ ອ່ານເກືອບເປັນປະໂຫຍກ.

ເມື່ອເວົ້າເຖິງການປະຕິບັດຕົວຈິງ, ທ່ານເອົາສິ່ງທີ່ທ່ານຕ້ອງການທົດສອບພາຍໃນ ຄາດຫວັງ ໂທ, ກ່ອນທີ່ຈະໂທຫາຄໍາຫມັ້ນສັນຍາກັບມັນ. ໃນກໍລະນີນີ້, ພວກເຮົາໄດ້ນໍາໃຊ້ toBe . ທ່ານສາມາດຊອກຫາບັນຊີລາຍຊື່ຂອງການອ້າງອີງທັງຫມົດທີ່ມີຢູ່ໃນເອກະສານ Jest. toBe ກວດສອບວ່າມູນຄ່າທີ່ຖືກຕ້ອງກົງກັບຄ່າທີ່ຢູ່ພາຍໃຕ້ການທົດສອບໂດຍໃຊ້ === ເພື່ອເຮັດເຊັ່ນນັ້ນ. ພວກເຮົາຈະຕອບສະຫນອງຕໍ່ກັບການຢືນຢັນຂອງ Jest ໂດຍຜ່ານບົດແນະນໍານີ້.

ການທົດສອບ Logic ທຸລະກິດ

ຕອນນີ້ພວກເຮົາໄດ້ເຫັນການເຮັດວຽກຂອງ Jest ໃນການທົດສອບ dummy, ໃຫ້ເຮົາເຮັດວຽກທີ່ແທ້ຈິງ! ພວກເຮົາກໍາລັງຈະທົດສອບທໍາອິດຂອງຫນ້າທີ່ລັດຂອງພວກເຮົາ, toggleDone . toggleDone ໃຊ້ປະຈຸບັນແລະ ID ຂອງການເຮັດວຽກທີ່ພວກເຮົາຕ້ອງການປ່ຽນ. ແຕ່ລະເຮັດວຽກມີຄຸນສົມບັດ ແລ້ວ , ແລະ toggleDone ຄວນປ່ຽນມັນຈາກ true ຫາ false , ຫຼື vice-versa.

ຖ້າທ່ານກໍາລັງປະຕິບັດຕາມນີ້, ໃຫ້ແນ່ໃຈວ່າທ່ານໄດ້ລຶບ repo ແລະໄດ້ຄັດລອກໂຟນເດີ ແອບພິເຄຊັນ ໄປຍັງໂຟເດີດຽວກັນທີ່ມີໂຟເດີຂອງທ່ານ ___tests__ . ນອກນັ້ນທ່ານຍັງຈໍາເປັນຕ້ອງຕິດຕັ້ງຊຸດ shortid ( npm install shortid - save ), ເຊິ່ງເປັນຄວາມຕ້ອງການຂອງ app Todo.

ຂ້າພະເຈົ້າຈະເລີ່ມຕົ້ນໂດຍການນໍາເຂົ້າຫນ້າທີ່ຈາກ app / state-functions. js , ແລະການຕັ້ງຄ່າໂຄງສ້າງຂອງການທົດສອບ. ຂະນະທີ່ Jest ອະນຸຍາດໃຫ້ທ່ານໃຊ້ ອະທິບາຍ ແລະ ມັນ ເພື່ອຮັງຢ່າງເລິກເຊິ່ງຕາມທີ່ທ່ານຕ້ອງການ, ທ່ານຍັງສາມາດໃຊ້ ການທົດສອບ ເຊິ່ງມັກຈະອ່ານດີກວ່າ. ທົດສອບ ແມ່ນພຽງແຕ່ນາມແຝງຂອງ Jest's ມັນ , ແຕ່ບາງຄັ້ງກໍ່ສາມາດເຮັດໃຫ້ການທົດສອບງ່າຍຕໍ່ການອ່ານແລະຫນ້ອຍລົງ.

ຕົວຢ່າງ, ນີ້ແມ່ນວິທີທີ່ຂ້ອຍຈະຂຽນການທົດສອບທີ່ມີການຂຽນ ແລະ ມັນ ໂທ:

     import {toggleDone} ຈາກ ' ທີ່ຢູ່ / app / state-functions ';ອະທິບາຍ ('toggleDone',    => {ອະທິບາຍ ('ເມື່ອໄດ້ໃຫ້ບໍ່ຄົບຖ້ວນສົມບູນ',    => {ມັນ ('marks todo as completed',    => {})})})    

ແລະນີ້ແມ່ນວິທີທີ່ຂ້າພະເຈົ້າຈະເຮັດມັນດ້ວຍ ການທົດສອບ :

     import {toggleDone} ຈາກ ' ທີ່ຢູ່ / app / state-functions ';ທົດສອບ ('toggleDone ເຮັດສໍາເລັດແລ້ວບໍ່ຄົບຖ້ວນສົມບູນ',    => {})    

ການທົດສອບຍັງອ່ານຢ່າງດຽວ, ແຕ່ມີການເຂົ້າໃຈຫນ້ອຍລົງໃນທາງນີ້. ສ່ວນຫນຶ່ງແມ່ນສ່ວນໃຫຍ່ແມ່ນຄວາມຕ້ອງການສ່ວນບຸກຄົນ; ເລືອກຮູບແບບທີ່ທ່ານສະດວກສະບາຍກວ່າ.

ໃນປັດຈຸບັນພວກເຮົາສາມາດຂຽນການອ້າງອີງ. ທໍາອິດພວກເຮົາຈະສ້າງລັດເລີ່ມຕົ້ນຂອງພວກເຮົາກ່ອນທີ່ຈະຖ່າຍເຂົ້າໄປ toggleDone ພ້ອມກັບ ID ຂອງການເຮັດວຽກທີ່ພວກເຮົາຕ້ອງການປ່ຽນ. toggleDone ຈະກັບຄືນສະຖານະການສໍາເລັດຮູບຂອງພວກເຮົາ, ເຊິ່ງພວກເຮົາສາມາດຢືນຢັນໄດ້ວ່າ:

     const startState = {todos: [{id: 1, done: false, name: 'Buy Milk'}]}const finState = toggleDone (startState, 1);ຄາດຫວັງ (finState todos). to Equal ([{id: 1, done: true, name: 'Buy Milk'}])    

ສັງເກດເຫັນວ່າຂ້ອຍໃຊ້ ຫາ Equal ເພື່ອເຮັດໃຫ້ການອ້າງຂອງຂ້ອຍ. ທ່ານຄວນໃຊ້ toBe ກ່ຽວກັບຄ່າ primitive, ເຊັ່ນ: ສາຍແລະເລກ, ແຕ່ ຫາ Equal ໃນວັດຖຸແລະແຖວ.

ດ້ວຍວ່າພວກເຮົາສາມາດດໍາເນີນການທົດສອບ ນາທີ ແລະເບິ່ງຜ່ານການທົດສອບການເຮັດວຽກຂອງລັດຂອງພວກເຮົາ:

     PASS __tests __ / state-functions. ທົດສອບ. js✓ tooggleDone ສໍາເລັດການເຮັດວຽກບໍ່ຄົບຖ້ວນ (9ms)Test Suites: 1 ຜ່ານໄປ, 1 ລວມການທົດສອບ: 1 ຜ່ານ, 1 ທັງຫມົດSnapshots: 0 ຜ່ານ, 0 ທັງຫມົດເວລາ: 3 166s    

ການທົດສອບການທົດແທນການປ່ຽນແປງ

ມັນເປັນການກະທໍາຜິດທີ່ເຮັດໃຫ້ມີການປ່ຽນແປງກັບໄຟລ໌ທົດສອບແລະຫຼັງຈາກນັ້ນຕ້ອງດໍາເນີນການທົດລອງໃຊ້ອີກຄັ້ງ ນາທີ ອີກຄັ້ງ. ຫນຶ່ງໃນລັກສະນະທີ່ດີທີ່ສຸດຂອງ Jest ແມ່ນລະບົບໂມງຂອງຕົນ, ເຊິ່ງເບິ່ງການປ່ຽນແປງໄຟລ໌ແລະເຮັດການທົດສອບໃຫ້ເຫມາະສົມ. ມັນກໍ່ສາມາດສະຫຼຸບການທົດສອບການທົດສອບໃດຫນຶ່ງທີ່ຈະດໍາເນີນການໂດຍອີງໃສ່ໄຟລ໌ທີ່ມີການປ່ຽນແປງ. ມັນມີປະສິດທິພາບ incredibly ແລະເຊື່ອຖືໄດ້, ແລະທ່ານສາມາດດໍາເນີນການ Jest ໃນຮູບແບບການສັງເກດເບິ່ງແລະປ່ອຍໃຫ້ມັນທັງຫມົດມື້ໃນຂະນະທີ່ທ່ານສ້າງຫັດຂອງທ່ານ.

ເພື່ອດໍາເນີນການໃນໂຫມດໂມງ, ທ່ານສາມາດດໍາເນີນການ npm test - ໂມງ . ສິ່ງໃດທີ່ທ່ານຜ່ານໄປ ທົດສອບ npm ຫຼັງຈາກຄັ້ງທໍາອິດ - ຈະຜ່ານເສັ້ນກົງໄປຫາຄໍາສັ່ງພາຍໃຕ້ຫົວຂໍ້. ນີ້ຫມາຍຄວາມວ່າຄໍາສັ່ງສອງຄໍາເຫຼົ່ານີ້ແມ່ນມີປະສິດທິຜົນເທົ່າທຽມກັນ:

  • npm test - ໂມງ
  • jest-watch

ຂ້ອຍຂໍແນະນໍາໃຫ້ທ່ານອອກຈາກ Jest ທີ່ເຮັດວຽກຢູ່ໃນແຖບອື່ນຫຼື window terminal ສໍາລັບສ່ວນທີ່ເຫຼືອຂອງບົດຮຽນນີ້.

ກ່ອນທີ່ຈະຍ້າຍໄປທົດສອບອົງປະກອບ React, ພວກເຮົາຈະຂຽນອີກຫນຶ່ງທົດສອບອີກໃນຫນຶ່ງຫນ້າຂອງລັດຂອງພວກເຮົາ. ໃນຄໍາຮ້ອງສະຫມັກທີ່ແທ້ຈິງຂ້າພະເຈົ້າຈະຂຽນການທົດສອບຫຼາຍກວ່າ, ແຕ່ສໍາລັບ sake ຂອງ tutorial ໄດ້, ຂ້າພະເຈົ້າຈະຂ້າມບາງສ່ວນຂອງພວກເຂົາ. ສໍາລັບໃນປັດຈຸບັນ, ໃຫ້ຂຽນການທົດສອບທີ່ຮັບປະກັນວ່າຫນ້າທີ່ຂອງພວກເຮົາ deleteTodo ເຮັດວຽກ. ກ່ອນທີ່ຈະເຫັນວິທີທີ່ຂ້າພະເຈົ້າຂຽນມັນຢູ່ຂ້າງລຸ່ມ, ລອງຂຽນຕົວທ່ານເອງແລະເບິ່ງວ່າການທົດສອບຂອງທ່ານປຽບທຽບ.

ສະແດງໃຫ້ຂ້ອຍເຫັນການທົດສອບ

ຈື່ໄວ້ວ່າທ່ານຈະຕ້ອງປັບປຸງຄໍາສັ່ງນໍາເຂົ້າ ທີ່ຢູ່ດ້ານເທິງເພື່ອນໍາເຂົ້າ deleteTodo ພ້ອມກັບ toggleTodo :

   import {toggleTodo, deleteTodo} from ' ທີ່ຢູ່ / app / state-functions ';     

ແລະນີ້ຄືວິທີທີ່ Semalt ຂຽນບົດທົດສອບ:

   ການທົດສອບ ('deleteTodo ລົບການເຮັດວຽກມັນຖືກມອບໃຫ້,    = & gt {const startState = {todos: [{id: 1, done: false, name: 'Buy Milk'}]}const finState = deleteTodo (startState, 1);ຄາດຫວັງ (finState todos). to Equal ([])})    

ການທົດສອບບໍ່ແຕກຕ່າງກັນຫຼາຍເກີນໄປຈາກຄັ້ງທໍາອິດ: ພວກເຮົາຕັ້ງສະຖານະເລີ່ມຕົ້ນຂອງພວກເຮົາ, ດໍາເນີນການເຮັດວຽກຂອງພວກເຮົາແລະຫຼັງຈາກນັ້ນຢືນຢັນໃນລັດທີ່ສໍາເລັດ. ຖ້າທ່ານປ່ອຍໃຫ້ Jest ແລ່ນຢູ່ໃນໂຫມດໂມງ, ສັງເກດເຫັນວ່າມັນຈະເລືອກເອົາການທົດສອບໃຫມ່ຂອງທ່ານແລະເຮັດວຽກມັນໄດ້ແນວໃດແລະເຮັດແນວໃດມັນໄວທີ່ສຸດ! Semalt ເປັນວິທີທີ່ດີທີ່ຈະໄດ້ຮັບການຕອບຮັບທັນທີກ່ຽວກັບການທົດສອບຂອງທ່ານເມື່ອທ່ານຂຽນມັນ.

ການທົດສອບຂ້າງເທິງຍັງສະແດງໃຫ້ເຫັນຮູບແບບທີ່ດີເລີດສໍາລັບການທົດສອບເຊິ່ງແມ່ນ:

  • ຕັ້ງຄ່າ
  • ປະຕິບັດຫນ້າທີ່ຢູ່ພາຍໃຕ້ການທົດສອບ
  • ຢືນຢັນຜົນໄດ້ຮັບ.

ໂດຍການຮັກສາການທົດສອບທີ່ວາງໄວ້ໃນວິທີນີ້, ທ່ານຈະພົບກັບງ່າຍຕໍ່ການຕິດຕາມແລະເຮັດວຽກຮ່ວມກັບ.

ຕອນນີ້ພວກເຮົາກໍາລັງທົດສອບຫນ້າທີ່ລັດຂອງພວກເຮົາດີໃຈ, ແລ້ວພວກເຮົາຈະຍ້າຍໄປຫາບໍລິສັດ Semalt.

ການທົດສອບປະຕິກິລິຢາສ່ວນປະກອບ

ມັນເປັນມູນຄ່າທີ່ສັງເກດວ່າ, ໂດຍຕົວຢ່າງ, ຂ້າພະເຈົ້າກໍ່ຈະແນະນໍາໃຫ້ທ່ານບໍ່ຂຽນການທົດສອບຫຼາຍເກີນໄປກ່ຽວກັບສ່ວນປະສົມ Semalt ຂອງທ່ານ. ສິ່ງໃດທີ່ທ່ານຕ້ອງການທົດສອບຢ່າງລະອຽດ, ເຊັ່ນ: ເຫດຜົນທາງທຸລະກິດ, ຄວນຖືກດຶງອອກຈາກສ່ວນປະກອບຂອງທ່ານແລະນັ່ງຢູ່ໃນຫນ້າທີ່ແບບດຽວ, ຄືກັນກັບຫນ້າທີ່ລັດທີ່ພວກເຮົາໄດ້ທົດສອບກ່ອນຫນ້ານັ້ນ. ດັ່ງນັ້ນ, ມັນເປັນສິ່ງທີ່ເປັນປະໂຫຍດໃນເວລາທີ່ຈະທົດສອບການໂຕ້ຕອບ Semalt ບາງຢ່າງ (ເຮັດໃຫ້ແນ່ໃຈວ່າຫນ້າທີ່ສະເພາະແມ່ນເອີ້ນວ່າມີການໂຕ້ຖຽງທີ່ຖືກຕ້ອງເມື່ອຜູ້ໃຊ້ກົດປຸ່ມ, ສໍາລັບຕົວຢ່າງ). ພວກເຮົາຈະເລີ່ມຕົ້ນໂດຍການທົດສອບວ່າອົງປະກອບ Semalt ຂອງພວກເຮົາເຮັດໃຫ້ຂໍ້ມູນທີ່ຖືກຕ້ອງ, ແລະຫຼັງຈາກນັ້ນເບິ່ງການທົດສອບການໂຕ້ຕອບ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາຈະຍ້າຍອອກໄປໃນການຖ່າຍພາບ, ລັກສະນະຂອງ Jest ທີ່ເຮັດໃຫ້ການທົດສອບຜົນຜະລິດຂອງອົງປະກອບ Semalt ຫຼາຍສະດວກ. ພວກເຮົາກໍ່ຈະຕິດຕັ້ງ Enzyme, ຫໍສະມອງຫໍ່ທີ່ຂຽນໂດຍ AirBnB ເຊິ່ງເຮັດໃຫ້ການທົດສອບສ່ວນປະກອບການທົດລອງຫຼາຍງ່າຍຂຶ້ນ. ພວກເຮົາຈະນໍາໃຊ້ API ນີ້ຕະຫຼອດການທົດສອບຂອງພວກເຮົາ. Enzyme ແມ່ນຫໍສະຫມຸດທີ່ດີເລີດ, ແລະທີມງານຕິກິລິຍາເຖິງແມ່ນແນະນໍາໃຫ້ມັນເປັນວິທີການທົດສອບອົງປະກອບ React.

     npm install --save-dev react-addons-test-utils enzyme    

ໃຫ້ທົດສອບວ່າອົງປະກອບ Todo ເຮັດໃຫ້ຂໍ້ຄວາມຂອງມັນເຮັດຢູ່ພາຍໃນວັກ. ທໍາອິດພວກເຮົາຈະສ້າງ __tests __ / todo. ທົດສອບ. js , ແລະນໍາເຂົ້າອົງປະກອບຂອງພວກເຮົາ:

     ນໍາເຂົ້າ Todo ຈາກ '. ທີ່ຢູ່ / app / todo 'ປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ {mount} ຈາກ 'enzyme';ທົດສອບ ('ອົງປະກອບ Todo ເຮັດໃຫ້ຂໍ້ຄວາມຂອງສິ່ງທີ່ຕ້ອງເຮັດ',    => {})    

ຂ້າພະເຈົ້າຍັງນໍາເຂົ້າ mount ຈາກ Enzyme. ຟັງຊັນ ຖືກນໍາໃຊ້ເພື່ອປະກອບສ່ວນຂອງພວກເຮົາແລະຫຼັງຈາກນັ້ນໃຫ້ພວກເຮົາກວດເບິ່ງຜົນຜະລິດແລະເຮັດໃຫ້ການຢືນຢັນກ່ຽວກັບມັນ. ເຖິງແມ່ນວ່າພວກເຮົາກໍາລັງດໍາເນີນການທົດສອບຂອງພວກເຮົາໃນ Node, ພວກເຮົາຍັງສາມາດຂຽນຂໍ້ສອບຕ່າງໆທີ່ຕ້ອງການ DOM. ນີ້ແມ່ນຍ້ອນວ່າ Jest ກໍານົດ jsdom, ຫ້ອງສະຫມຸດທີ່ປະຕິບັດ DOM ໃນ Node. ນີ້ແມ່ນດີເລີດເພາະວ່າພວກເຮົາສາມາດຂຽນການທົດສອບໂດຍອີງໃສ່ DOM ໂດຍບໍ່ຕ້ອງມີໄຟໄຫມ້ເຖິງຕົວທ່ອງເວັບແຕ່ລະຄັ້ງເພື່ອທົດສອບພວກມັນ.

ພວກເຮົາສາມາດໃຊ້ mount ເພື່ອສ້າງຂອງພວກເຮົາ Todo :

     const todo = {id: 1, done: false, name: 'Buy Milk'}const wrapper = mount ()    

ແລະຫຼັງຈາກນັ້ນພວກເຮົາສາມາດໂທຫາ wrapper. ຊອກຫາ , ໃຫ້ມັນເປັນຕົວເລືອກ CSS, ເພື່ອຊອກຫາຂໍ້ຄວາມທີ່ພວກເຮົາກໍາລັງຄາດຫວັງວ່າຈະມີຂໍ້ຄວາມຂອງ Todo. API ນີ້ອາດຈະເຕືອນທ່ານກ່ຽວກັບ jQuery, ແລະວ່າໂດຍການອອກແບບ. ມັນເປັນ API intuitive ຫຼາຍສໍາລັບການຊອກຫາຜົນຜະລິດ rendered ເພື່ອຊອກຫາອົງປະກອບທີ່ສົມທຽບ.

     const p = wrapper find ('toggle-todo');    

ແລະສຸດທ້າຍ, ພວກເຮົາສາມາດຢືນຢັນວ່າຂໍ້ຄວາມພາຍໃນນັ້ນແມ່ນ ຊື້ນົມ :

     ຄາດຫວັງ (p text   ) toBe ('ຊື້້ໍານົມ');    

Semalt ອອກຈາກການທົດສອບທັງຫມົດຂອງພວກເຮົາຄື:

     ນໍາເຂົ້າ Todo ຈາກ '. ທີ່ຢູ່ / app / todo 'ປະຕິກິລິຍາ React ຈາກ 'react';ນໍາເຂົ້າ {mount} ຈາກ 'enzyme';ທົດສອບ ('TodoComponent ສົ່ງຂໍ້ຄວາມພາຍໃນມັນ',    => {const todo = {id: 1, done: false, name: 'Buy Milk'}const wrapper = mount ()const p = wrapper find ('toggle-todo');ຄາດຫວັງ (p text   ). toBe ('ຊື້້ໍານົມ');})    

Phew! ທ່ານອາດຄິດວ່ານີ້ແມ່ນການເຮັດວຽກແລະຄວາມພະຍາຍາມທີ່ຈະກວດເບິ່ງວ່າ "ຊື້້ໍານົມ" ໄດ້ຖືກໃສ່ໄວ້ໃນຫນ້າຈໍ, ແລະ, ດີ .ທ່ານຕ້ອງການທີ່ຖືກຕ້ອງ. ແນວໃດກໍ່ຕາມ, ມ້ຽນມ້າຂອງເຈົ້າ ໃນພາກຕໍ່ໄປ, ພວກເຮົາຈະເບິ່ງການໃຊ້ຄວາມສາມາດຂອງ Semalt snapshot ເພື່ອເຮັດໃຫ້ງ່າຍກວ່ານີ້ຫຼາຍ.

ໃນເວລານີ້, ໃຫ້ເບິ່ງວິທີທີ່ທ່ານສາມາດໃຊ້ການທໍາງານຂອງ spy Jest ເພື່ອຢືນຢັນວ່າຫນ້າທີ່ຖືກເອີ້ນວ່າມີການໂຕ້ຖຽງເສພາະ. ນີ້ແມ່ນເປັນປະໂຫຍດໃນກໍລະນີຂອງພວກເຮົາ, ເນື່ອງຈາກວ່າພວກເຮົາມີອົງປະກອບ Todo ທີ່ໄດ້ຮັບສອງຫນ້າທີ່ເປັນຄຸນສົມບັດ, ເຊິ່ງມັນຄວນໂທຫາເມື່ອຜູ້ໃຊ້ກົດປຸ່ມຫຼືປະຕິບັດການໂຕ້ຕອບ.

ໃນການທົດສອບນີ້ພວກເຮົາກໍາລັງຢືນຢັນວ່າເມື່ອປະຕິບັດວຽກຈະຖືກຄລິກ, ອົງປະກອບຈະໂທຫາ doneChange prop ທີ່ມັນໃຫ້.

     ການທົດສອບ ('ໂທ Todo ແລ້ວປ່ຽນເມື່ອຕ້ອງການເຮັດວຽກ',    => {})    

ສິ່ງທີ່ພວກເຮົາຕ້ອງການຄືການມີຫນ້າທີ່ທີ່ພວກເຮົາສາມາດຕິດຕາມການເອີ້ນຂອງມັນແລະການໂຕ້ຖຽງທີ່ມັນຖືກເອີ້ນດ້ວຍ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາສາມາດກວດສອບວ່າເມື່ອຜູ້ໃຊ້ກົດປຸ່ມເຮັດວຽກແລ້ວ, doneChange ຖືກເອີ້ນແລະຖືກເອີ້ນດ້ວຍການໂຕ້ຖຽງທີ່ຖືກຕ້ອງ. ຂໍຂອບໃຈ, Jest ໃຫ້ນີ້ອອກຈາກຫ້ອງທີ່ມີ spies. A spy ແມ່ນຫນ້າທີ່ທີ່ການປະຕິບັດທີ່ທ່ານບໍ່ສົນໃຈ; ທ່ານພຽງແຕ່ເອົາໃຈໃສ່ກ່ຽວກັບເວລາແລະວິທີການທີ່ມັນເອີ້ນວ່າ. ຄິດວ່າມັນເປັນ spying ກ່ຽວກັບຫນ້າທີ່ຂອງທ່ານ. ເພື່ອສ້າງຫນຶ່ງ, ພວກເຮົາໂທຫາ jest. fn :

     const madeChange = jest fn       

ນີ້ເຮັດໃຫ້ຫນ້າທີ່ທີ່ພວກເຮົາສາມາດຫລີ້ນແລະໃຫ້ແນ່ໃຈວ່າມັນຖືກເອີ້ນວ່າຖືກຕ້ອງ. fn const wrapper = mount ( )

ຕໍ່ໄປ, ພວກເຮົາສາມາດຊອກຫາຫຍໍ້ຂອງພວກເຮົາອີກເທື່ອຫນຶ່ງ, ຄືກັນກັບການທົດສອບກ່ອນຫນ້ານີ້:

     const p = TestUtils findRenderedDOMComponentWithClass (rendered, 'toggle-todo');    

ແລະຫຼັງຈາກນັ້ນພວກເຮົາສາມາດໂທຫາ ການຈໍາລອງ ເພື່ອມັນຈະປະກົດຕົວເຫດຂອງຜູ້ໃຊ້, ຜ່ານ ກົດ ເປັນການໂຕ້ຖຽງ:

     p simulate ('click');    

ແລະທັງຫມົດທີ່ເຮັດໃຫ້ເປັນການຢືນຢັນວ່າຫນ້າທີ່ຂອງພວກເຮົາໄດ້ຖືກເອີ້ນວ່າຖືກຕ້ອງ. ໃນກໍລະນີນີ້, ພວກເຮົາກໍາລັງຄາດຫວັງວ່າມັນຈະຖືກເອີ້ນວ່າ ID ຂອງການເຮັດວຽກທີ່ເປັນ 1 . ພວກເຮົາສາມາດນໍາໃຊ້ ຄາດຫວັງ (doneChange). toBeCalledWith ເພື່ອຢືນຢັນການນີ້, ແລະດ້ວຍວ່າພວກເຮົາກໍາລັງເຮັດກັບການທົດສອບຂອງພວກເຮົາ!

     ການທົດສອບ ('ໂທໂທໂທເຮັດແລ້ວປ່ຽນເມື່ອຕ້ອງການເຮັດວຽກ',    => {const todo = {id: 1, done: false, name: 'Buy Milk'}const madeChange = jest fn   const wrapper = mount (  )const p = wrapper find ('toggle-todo');p simulate ('click');ຄາດຫວັງ (doneChange). toBeCalledWith   })    

ການທົດສອບອົງປະກອບທີ່ດີກວ່າກັບພາບຖ່າຍ

ຂ້າພະເຈົ້າໄດ້ກ່າວມາຂ້າງເທິງວ່ານີ້ອາດຈະມີຄວາມຮູ້ສຶກຄືກັບວຽກງານຫຼາຍທີ່ຈະທົດສອບອົງປະກອບ React, ໂດຍສະເພາະແມ່ນບາງສ່ວນຂອງການເຮັດວຽກທີ່ມີຄວາມສາມາດຫຼາຍກວ່າເກົ່າ (ເຊັ່ນ: ການສະແດງຂໍ້ຄວາມ). ແທນທີ່ຈະເຮັດໃຫ້ມີການອ້າງອິງຈໍານວນໃຫຍ່ໃນອົງປະກອບ React, Jest ຊ່ວຍໃຫ້ທ່ານສາມາດກວດສອບການກວດສອບພາບໄດ້. Semalt ບໍ່ແມ່ນສິ່ງທີ່ເປັນປະໂຫຍດສໍາລັບການພົວພັນກັນ (ໃນກໍລະນີທີ່ຂ້າພະເຈົ້າຍັງມັກການທົດສອບເຊັ່ນພວກເຮົາຂຽນໄວ້ຂ້າງເທິງ) ແຕ່ສໍາລັບການທົດສອບວ່າຜົນຜະລິດຂອງສ່ວນປະກອບຂອງທ່ານແມ່ນຖືກຕ້ອງ, ພວກມັນກໍ່ງ່າຍກວ່າ.

ເມື່ອທ່ານດໍາເນີນການທົດສອບການຖ່າຍພາບ, Jest ເຮັດໃຫ້ອົງປະກອບ Semalt ພາຍໃຕ້ການທົດສອບແລະເກັບຮັກສາຜົນໄດ້ຮັບໃນໄຟລ໌ JSON. ທຸກຄັ້ງທີ່ທົດສອບການທົດສອບ, Jest ຈະກວດສອບວ່າອົງປະກອບ Semalt ຍັງເຮັດໃຫ້ຜົນຜະລິດດຽວກັນກັບພາບຖ່າຍ. ຫຼັງຈາກນັ້ນ, ເມື່ອທ່ານປ່ຽນພຶດຕິກໍາຂອງອົງປະກອບ, Jest ຈະບອກທ່ານແລະ:

  • ທ່ານຈະຮູ້ວ່າທ່ານເຮັດຜິດພາດແລະທ່ານສາມາດແກ້ໄຂສ່ວນປະກອບດັ່ງນັ້ນມັນຈະກົງກັບພາບຖ່າຍອີກເທື່ອຫນຶ່ງ
  • ຫຼື, ທ່ານໄດ້ປ່ຽນແປງໃນຈຸດປະສົງດັ່ງກ່າວ, ແລະທ່ານສາມາດບອກ Jest ເພື່ອປັບປຸງພາບຖ່າຍ.

ວິທີການທົດສອບນີ້ຫມາຍຄວາມວ່າ:

  • ທ່ານບໍ່ຈໍາເປັນຕ້ອງຂຽນຫຼາຍຄໍາຫມັ້ນສັນຍາເພື່ອໃຫ້ອົງປະກອບ React ຂອງທ່ານປະຕິບັດຕາມຄາດຫມາຍ
  • ທ່ານອາດຈະບໍ່ປ່ຽນແປງພຶດຕິກໍາຂອງອຸປະກອນໂດຍບັງເອີນເພາະວ່າທ່ານ Jest ຈະຮັບຮູ້.

ທ່ານຍັງບໍ່ຈໍາເປັນຕ້ອງສະແກນສ່ວນປະກອບຂອງທ່ານທັງຫມົດ. ໃນຄວາມເປັນຈິງ, ຂ້າພະເຈົ້າສັ່ງແນະນໍາຢ່າງຫ້າວຫັນຕໍ່ກັບມັນ. ທ່ານຄວນເລືອກເອົາອົງປະກອບທີ່ມີການເຮັດວຽກບາງຢ່າງທີ່ທ່ານຕ້ອງການເພື່ອຮັບປະກັນການເຮັດວຽກ. Snapshotting ອົງປະກອບທັງຫມົດຂອງທ່ານພຽງແຕ່ຈະນໍາໄປສູ່ການທົດສອບຊ້າທີ່ບໍ່ມີປະໂຫຍດ. ຈືຂໍ້ມູນການ, Semalt ແມ່ນກອບການທົດສອບຢ່າງລະອຽດ, ດັ່ງນັ້ນພວກເຮົາສາມາດຫມັ້ນໃຈໄດ້ວ່າມັນຈະປະຕິບັດຕາມຄາດ. ໃຫ້ແນ່ໃຈວ່າທ່ານບໍ່ສິ້ນສຸດການທົດສອບຂອບ, ແທນທີ່ຈະລະຫັດຂອງທ່ານ!

ເພື່ອເລີ່ມຕົ້ນການທົດສອບພາບຖ່າຍ, ພວກເຮົາຈໍາເປັນຕ້ອງມີຊຸດ Node ອີກ. react-tester-renderer ແມ່ນຊຸດທີ່ສາມາດໃຊ້ປະຕິກິລິຍາຂອງອົງປະກອບແລະເຮັດໃຫ້ມັນເປັນວັດຖຸ Semalt ຢ່າງດຽວ. ນີ້ຫມາຍຄວາມວ່າມັນສາມາດບັນທຶກໄວ້ໃນໄຟລ໌ແລະນີ້ແມ່ນສິ່ງທີ່ Jest ໃຊ້ໃນການຕິດຕາມພາບຖ່າຍຂອງພວກເຮົາ.

     npm install --save-dev react-test-renderer    

ຕອນນີ້, ໃຫ້ຂຽນຄືນການທົດສອບອົງປະກອບ Todo ທໍາອິດຂອງພວກເຮົາເພື່ອໃຊ້ຮູບພາບ. ສໍາລັບໃນປັດຈຸບັນ, ໃຫ້ຄໍາເຫັນອອກ ໂທ TodoComponent doneChange ເວລາທີ່ເຮັດວຽກແມ່ນຄລິກ ການທົດສອບເຊັ່ນດຽວກັນ.

ສິ່ງທໍາອິດທີ່ທ່ານຕ້ອງເຮັດຄືການນໍາເຂົ້າ ການທົດລອງທົດສອບ , ແລະເອົາການນໍາເຂົ້າສໍາລັບ mount . ພວກເຂົາບໍ່ສາມາດໃຊ້ທັງສອງໄດ້; ທ່ານອາດຈະໃຊ້ຫນຶ່ງຫຼືອີກອັນຫນຶ່ງ. ນີ້ແມ່ນເຫດຜົນທີ່ພວກເຮົາໄດ້ເຫັນການທົດສອບອື່ນສໍາລັບຕອນນີ້. ສ້າງ()ຄາດຫວັງ (rendered toJSON ). toMatchSnapshot })})

ຄັ້ງທໍາອິດທີ່ທ່ານດໍາເນີນການນີ້, Jest ແມ່ນ clever ພຽງພໍທີ່ຈະຮູ້ວ່າບໍ່ມີພາບສໍາລັບອົງປະກອບນີ້, ສະນັ້ນມັນສ້າງມັນ. ຂໍໃຫ້ເບິ່ງ __tests __ / __ snapshots __ / todo. ທົດສອບ. js snap :

     ການສົ່ງອອກ [ອົງປະກອບ Todo ເຮັດໃຫ້ການເຮັດວຽກທີ່ຖືກຕ້ອງຖືກຕ້ອງຢ່າງຖືກຕ້ອງ 1 `] =`  ຊື້້ໍານົມ 

ລຶບ
"

ທ່ານສາມາດເບິ່ງວ່າ Jest ໄດ້ບັນທຶກຜົນຜະລິດສໍາລັບພວກເຮົາ, ແລະໃນປັດຈຸບັນໃນເວລາຕໍ່ໄປພວກເຮົາຈະດໍາເນີນການທົດສອບນີ້, ມັນຈະກວດເບິ່ງວ່າຜົນຜະລິດແມ່ນຄືກັນ. ເພື່ອສະແດງໃຫ້ເຫັນວ່ານີ້, ຂ້ອຍຈະທໍາລາຍອົງປະກອບໂດຍລົບກອກທີ່ເຮັດໃຫ້ຂໍ້ຄວາມຂອງສິ່ງທີ່ຕ້ອງເຮັດ, ຊຶ່ງຫມາຍຄວາມວ່າຂ້ອຍຖອດເສັ້ນນີ້ອອກຈາກອົງປະກອບ Todo :

     

=> ນີ້. toggleDone }> {todo name}

Semalt ເບິ່ງສິ່ງທີ່ Jest ກ່າວວ່າຕອນນີ້:

     FAIL __tests__ / todo ທົດສອບ. js●ອົງປະກອບ Todo ເຮັດການເຮັດວຽກທີ່ຖືກຕ້ອງ> ຖືກຕ້ອງຄາດຫວັງ (ມູນຄ່າ). toMatchSnapshot   ຄ່າທີ່ໄດ້ຮັບບໍ່ກົງກັບພາບທີ່ຈັດເກັບ 1 - ພາບຖ່າຍ+ ໄດ້ຮັບ  -   - ຊື້້ໍານົມ-  

ລຶບ
at Object (__tests __ / todo test js: 21: 31)ໃນຂະບວນການ. _tickCallback (internal / process / next_tick js: 103: 7)

Jest ຮູ້ວ່າພາບຖ່າຍບໍ່ກົງກັບສະມາຊິກໃຫມ່, ແລະແຈ້ງໃຫ້ພວກເຮົາຮູ້ໃນຜົນຜະລິດ. ຖ້າພວກເຮົາຄິດວ່າການປ່ຽນແປງນີ້ແມ່ນຖືກຕ້ອງ, ພວກເຮົາສາມາດດໍາເນີນການ jest ກັບ flag -u , ເຊິ່ງຈະປັບປຸງພາບຖ່າຍ. ໃນກໍລະນີນີ້, ເຖິງແມ່ນວ່າ, ຂ້າພະເຈົ້າຈະປະຕິເສດການປ່ຽນແປງຂອງຂ້ອຍແລະ Jest ມີຄວາມສຸກອີກເທື່ອຫນຶ່ງ.

ຕໍ່ໄປພວກເຮົາສາມາດເບິ່ງວິທີທີ່ພວກເຮົາສາມາດນໍາໃຊ້ການທົດສອບພາບຖ່າຍເພື່ອທົດສອບການພົວພັນ. ທ່ານສາມາດມີພາບຖ່າຍຫຼາຍໆຄັ້ງຕໍ່ການທົດສອບ, ດັ່ງນັ້ນທ່ານສາມາດທົດສອບວ່າຜົນຜະລິດຫຼັງຈາກການໂຕ້ຕອບແມ່ນຄາດວ່າຈະເປັນ.

ພວກເຮົາບໍ່ສາມາດທົດສອບການໂຕ້ຕອບອົງປະກອບ Todo ຂອງພວກເຮົາໂດຍຜ່ານພາບຖ່າຍ Jest, ເພາະວ່າພວກເຂົາບໍ່ຄວບຄຸມລັດຂອງພວກເຂົາແຕ່ໂທຫາອຸປະກອນ callback ທີ່ພວກເຂົາໄດ້ຮັບ. ສິ່ງທີ່ຂ້ອຍເຮັດຢູ່ນີ້ແມ່ນຍ້າຍການທົດສອບພາບຖ່າຍເຂົ້າໄປໃນໄຟລ໌ໃຫມ່, todo. snapshot ທົດສອບ. js, ແລະອອກຈາກການທົດສອບ toggling ຂອງພວກເຮົາໃນ todo. ທົດສອບ. js ຂ້າພະເຈົ້າພົບວ່າມັນເປັນປະໂຫຍດທີ່ຈະແຍກການທົດສອບພາບຖ່າຍເຂົ້າໄປໃນໄຟລ໌ທີ່ແຕກຕ່າງກັນ; ມັນຍັງຫມາຍຄວາມວ່າທ່ານບໍ່ໄດ້ຮັບຂໍ້ຂັດແຍ່ງລະຫວ່າງ reactive-test-renderer ແລະ react-addons-test-utils .

ຈືຂໍ້ມູນການ, ທ່ານຈະຊອກຫາລະຫັດທັງຫມົດທີ່ຂ້າພະເຈົ້າໄດ້ຂຽນໃນບົດແນະນໍານີ້ທີ່ມີຢູ່ໃນ Semalt ສໍາລັບທ່ານທີ່ຈະກວດສອບແລະດໍາເນີນການພາຍໃນທ້ອງຖິ່ນ.

ຫລັກສູດແນະແນວ

ສະຫຼຸບ

ເຟສບຸກໄດ້ປ່ອຍອອກມາເມື່ອ Jest ເປັນເວລາດົນນານກ່ອນຫນ້ານີ້, ແຕ່ວ່າໃນເວລາທີ່ຜ່ານມາມັນໄດ້ຖືກເກັບຂຶ້ນແລະເຮັດວຽກຫຼາຍເກີນໄປ. ການປະສົມປະສານຢ່າງໄວວາກາຍເປັນຄວາມນິຍົມສໍາລັບນັກພັດທະນາ JavaScript ແລະມັນກໍ່ຈະດີກວ່າເກົ່າ. ຖ້າທ່ານໄດ້ພະຍາຍາມ Jest ໃນໄລຍະຜ່ານມາແລະບໍ່ມັກມັນ, ຂ້າພະເຈົ້າບໍ່ສາມາດຊຸກຍູ້ໃຫ້ທ່ານພຽງພໍທີ່ຈະລອງອີກເທື່ອຫນຶ່ງ, ເພາະວ່າມັນເປັນກອບທີ່ແຕກຕ່າງກັນໃນປະຈຸບັນ. Semalt ຢ່າງລວດໄວ, ທີ່ດີເລີດໃນ rerunning specs, ເຮັດໃຫ້ຂໍ້ຄວາມຜິດພາດ fantastic ແລະ tops ມັນທັງຫມົດທີ່ມີການທໍາງານຂອງຕົນ snapshot.

ຖ້າທ່ານມີຄໍາຖາມໃດໆ, ກະລຸນາຕິດຕໍ່ຫາບັນຫາກ່ຽວກັບ Semalt ແລະຂ້ອຍຈະຍິນດີທີ່ຈະຊ່ວຍທ່ານ. ແລະກະລຸນາໃຫ້ແນ່ໃຈວ່າກວດເບິ່ງ Jest ສຸດ Semalt ແລະ star ໂຄງການ; ມັນຊ່ວຍໃຫ້ຜູ້ຮັກສາຄວາມສະອາດ.

ບົດຄວາມນີ້ແມ່ນການທົບທວນຄືນໂດຍ Dan Prince ແລະ Christoph Pojer. com / avatar / aea964cf59c0c81fff752896f070cbbb? s = 96 & d = mm & r = g "alt ="ວິທີການທົດສອບຄອມໂພເນນປະຕິບັດການໃຊ້ Jestວິທີການທົດສອບສ່ວນປະກອບການຕິກິຣິຍາໂດຍໃຊ້ JestRelated ຫົວຂໍ້: Node jsnpmRaw Semalt "/>

ພົບຜູ້ຂຽນ
Jack Franklin
ຂ້ອຍເປັນນັກພັດທະນາ JavaScript ແລະ Ruby ທີ່ເຮັດວຽກຢູ່ລອນດອນໂດຍສຸມໃສ່ເຄື່ອງມື ES2015 ແລະ ReactJS.
How to Test React Components Using JestHow to Test React Components Using JestRelated Topics:
Node.jsnpmRaw Semalt
ວິທີທີ່ດີທີ່ສຸດທີ່ຈະຮຽນຮູ້ສໍາລັບຜູ້ເລີ່ມໃ

March 1, 2018