Connect MongoDB ใน Cypress

Kitphon Poonyapalang
odds.team
Published in
2 min readNov 27, 2020

หลายๆคนที่มาเขียน 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 ด้านล่างครับ

--

--