ปกติในการทำ API testing ด้วย JavaScript และ NodeJS นั้น
มักจะใช้งาน library ต่าง ๆ เช่น Jest และ SuperTest
รวมไปถึง library/framework อื่น ๆ เช่น cypress และ playwright
แต่ก็มีอีกตังที่น่าสนใจคือ Vitest
ที่เพิ่งปล่อย version 1 ออกมาเมื่อเดือนที่ผ่านมา
ซึ่งเบื้องหลังการทำงานคือ Vite ที่เร็วมาก ๆ
ดังนั้นมาลองใช้งานเล่น ๆ กันดู

สิ่งที่น่าสนใจสำหรับ Vitest ประกอบไปด้วย

  • ทำงานเร็วมาก รวมทั้งใช้ memory น้อยกว่าตัวอื่น ๆ เช่น Jest เป็นต้น
  • ใช้ config เดียวกับ Vite
  • สนับสนุน JavaScript, TypeScript และ ESM รวมทั้ง JSX ด้วย
  • สนับสนุน Jest
  • มี watch mode น่าจะเป็น default ไปแล้ว
  • เริ่มต้นใช้งานแบบ zero configuration
  • สำหรับการ assrtion จะมี Chai มาให้เลย รวมทั้งมี assertType ให้อีกด้วย
  • ส่วนการ run test นั้นจะทำงานแบบ parallel มาให้เลย แต่ก็สามารถปิดการใช้งานได้
  • มี benchmark ให้เลย ชิวมาก
  • มี Vitest UI สำหรับแสดงผล report การทดสอบแบบสวย ๆ
  • ทดสอบได้ทั้ง UI test, API test และ Snapshot test
  • มี Mocking มาให้ใช้
  • มี in source testing คือเขียน test case ใน production code ได้เลย ตรงนี้ไม่ค่อยชอบเท่าไร

มาลองใช้งานกันดู

เริ่มด้วยการเขียน test และ run แบบปกติ (watch mode)

สำหรับไฟล์ package.json เป็นดังนี้

  • Test with watch mode
  • Test แล้วจบ พร้อม coverage
  • UI mode

ทำการแสดงผลการทดสอบแบบ html สวย ๆ ใน UI mode

มาลองทำ API testing ด้วย Vitest กันดีกว่า

ลองใช้งาน API จาก JsonPlaceHolder
โดยสิ่งที่ต้องการทดสอบประกอบไปด้วย

  • Response status code
  • Response content type
  • Body response ต้องเป็น object
  • JSON ของ response ต้องมี schema ตามที่ต้องการ

สามารถเขียนง่าย ๆ ได้ดังนี้

ผลการทดสอบเป็นดังนี้

ใช้งานง่ายดี เร็วด้วย สวยด้วย
ต้องใช้งานกันแล้ว
สนุกกับการ coding ครับ