พอดีมีเรื่องอยากให้ทดลองใช้ Bruno เครื่องมือที่เหมือนกับ Postman ในการยิง API แต่ว่าดีกว่าพอสมควร ทั้งเบากว่า + ความเป็นส่วนตัวที่มากกว่า
การใช้งานการ Test และคำสั่งควรรู้
ปล. เนื่องด้วยข้างในมันคือ javascript เพราะฉะนั้นแล้ว เราสามารถเขียน javascript เพื่อประยุกต์ใช้งานให้เหมาะกับเราได้
test("ชื่องาน" , function(){
expect("Hello World")
})JavaScriptนี้คือการเขียนคำสั่งแบบง่ายๆ เพื่อให้ใช้งานเทสได้ ที่นี้เรามาลองดูแต่ละคำสั่งกันดีกว่า
const body = res.getBody(); /*เอาไว้สำหรับดึงค่าข้อมูลของ Body ออกมา*/
expect(body).to.be.an("array"); /*เช็คว่าค่าใน body เป็น array หรือเปล่า*/
expect(body).to.be.an("object"); /*เช็คว่าค่าใน body เป็น object หรือเปล่า*/
expect(body).to.be.a("number"); /*เช็คว่าค่าใน body เป็น ตัวเลข หรือเปล่า*/
expect(body).to.be.a("string"); /*เช็คว่าค่าใน body เป็น ตัวอักษร หรือเปล่า*/
expect(body.length).to.be.greaterThan(0); /*เช็คว่า body มี object มากกว่า 0 ตัวหรือเปล่า*/
/*หรือจะเป็นการ Chek ว่ามีอยู่ เป็น null หรือ undefiend ก็สามารถเช็คได้ทั้งหมด*/
expect(body).to.exist;
expect(body).to.not.exist;
expect(body).to.be.null;
expect(body).to.not.be.null;
expect(body).to.be.undefined;
expect(body).to.not.be.empty;
/*หรือจะเป็นการ Check Proerty ก็ได้*/
expect(body).to.have.property("Code");
expect(body).to.have.property("Name", "Age");
expect(body).to.have.all.keys("a", "b");
expect(body).to.include.keys("a");
/*หรืออยากจะเช็คเป็นค่าว่าตรงกันไหมก็ทำได้*/
expect(body).to.equal(10);
expect(body).to.not.equal(5);
expect(body).to.be.greaterThan(5);
expect(body).to.be.at.least(5);
expect(body).to.be.lessThan(20);
expect(body).to.be.at.most(20);
expect(body).to.equal("abc");
expect(body).to.contain("ab");
expect(body).to.match(/^90\.\d+-R$/); /* regex ก็ได้นะ*/JavaScriptแล้วถ้าเราเขียนเช็คประมาณว่า เห้ยย อยากจะให้ผลลัพธ์ถ้าได้แบบนี้มัน Fail Case ล่ะ ควรจะทำยังไงดี
expect.fail("เคสนี้ไม่ผ่านน๊ะจ๊ะ");JavaScriptง่ายแค่นี้เอง….
ถ้าลองเอามาประยุกต์ดูก็จะได้ประมาณแบบนี้
test("version exists", () => {
expect(body[0].Version).to.equal("90.06-R");
});
test("ผลลัพธ์ต้องเท่ากับ 10 น่ะ", () => {
if(body.Amount >= 10){
expect.fail("API นี้บัคนะได้ค่าไม่ตรง");
}
});JavaScriptแต่เอาจริงๆ Bruno มันก็สามารถเช็คพวก Params หรือ Body ที่จะไปส่งไปได้ (โดยจะไม่ค่อยมีคนทำก็เถอะ)
const req = bru.getRequest(); /*ดึงค่าจาก params ใน Request*/
test("type param should be release", () => {
expect(req.params.type).to.equal("release"); /*ถ้าไม่เป็นคำว่า Release จะไม่ผ่านนะ*/
});
/*ถ้าเป็นภาษาใหม่ๆ ที่เอา Path เป็น Params ล่ะ*/
/releasenotelist/{{type}}
const req = bru.getRequest();
test("path param type exists", () => {
expect(req.params.type).to.exist;
});
/*ซึ่งค่าที่เป็น Body ก็เช็คได้นะ*/
const req = bru.getRequest();
test("request body has site", () => {
expect(req.body.site).to.equal("Prototype-Dala-AmsManee");
});JavaScriptจริงๆ ทำได้อีกเยอะเลย เรามาดูข้อควรทำดีกว่า
-1 test ควรจะมีแค่ 1 เรื่องเท่านั้น (อย่าทำให้มันสับสน)
– ควรจะบอก Error ให้สื่อได้ชัดเจน
ปล. ทุกอย่างที่เขียนมาเนี่ย Copy ChatGPT มาทั้งนั้น เดี๋ยวนี้ AI มันฉลาด แค่อยากเอามาสรุปให้เข้าใจในแบบตัวเองเฉยๆ แหละ