Connect MongoDB ใน Cypress
หลายๆคนที่มาเขียน cypress ใหม่ๆน่าจะมีคำถามเดียวกัน คือจะ connect database ในการ get, insert หรือ clear data ในขณะรันเทสได้อย่างไร?
ครั้นจะไปเขียน script เองเพื่อ insert หรือ clear data ระหว่างที่รันเทส หรือเปลี่ยน testcase ใหม่ก็ทำได้ไม่ค่อยสะดวก
เอาที่จริง เราก็ควรที่จะรันเทสไปตาม scenario ปกติแหละ แต่บาง scenario มันมีการใช้ data ซ้ำกัน แล้วในเว็บ(ระบบ)ของเราไม่มี feature ลบ data ทำให้การรันเทสแต่ละครั้งมันเพี้ยน และได้ผลลัพธ์ไม่เหมือนเดิม เราเลยจำเป็นจำต้องมีการ insert หรือ clear data ในทุกครั้งก่อนจะรันเทสเคสใหม่
ที่เว็บ cypress.io แนะนำว่า ถ้าหากจะ execute javascript codeให้เราทำผ่าน task plugin event
แล้ว task plugin event คืออะไร
เรามาดูตัวอย่างวิธีการเรียกใช้กันก่อน
เราสามารถเรียกใช้ task ได้ด้วยคำสั่ง cy.task(‘event’, ‘argument’);
event จะเป็นชื่อที่ใช้เรียก task นั้นๆ เหมือนเรียก method โดย event จะเป็นชื่อ task ที่เราจะตั้งไว้ใน pluginFile
argument ก็ตรงตัวเลย คือ argument ของ task นั้นๆ
เราจะสร้าง Task ได้อย่างไร
ให้ไปสร้าง task ไว้ที่ pluginFile ด้วย (path: cypress/plugins/index.js)
โดยเราจะต้องเพิ่ม on เข้าไปก่อนจะเริ่มเขียน
จากนั้นก็เพิ่มโค้ดสำหรับ insert ข้อมูลไปที่ event ของเราไปได้เลย
ทีนี้ในเทสเคส ของเราก็จะสามารถเรียกใช้แบบนี้ได้เลย
เราก็จะสามารถ Connect Database และ Insert ข้อมูลเข้า Mongo ได้แล้ว.
ข้อมูลเพิ่มเติมเกี่ยวกับเรื่อง task สามารถไปอ่านเพิ่มได้ที่ ref ด้านล่างครับ