การทดสอบฟังก์ชันสำหรับการส่งข้อยกเว้นที่ถูกต้อง
เพื่อทดสอบข้อยกเว้น เราสามารถใช้throwคำยืนยันที่ชัยให้ไว้ได้ การยืนยันนี้ช่วยให้เราระบุประเภทของข้อยกเว้นที่ควรโยนทิ้งและรายละเอียดเพิ่มเติมที่เราต้องการตรวจสอบ ด้วยการรวมการยืนยันนี้ในกรณีทดสอบของเรา เราสามารถมั่นใจได้ว่าฟังก์ชันของเราทำงานตามที่คาดไว้และจัดการกับเงื่อนไขข้อผิดพลาดได้อย่างเหมาะสม
ลองพิจารณาตัวอย่างที่เรามีฟังก์ชันที่หารสองจำนวน เราต้องการให้แน่ใจว่าฟังก์ชันส่งข้อยกเว้นเมื่อหารด้วยศูนย์ เราสามารถเขียนกรณีทดสอบโดยใช้throwการยืนยันของ Chai เพื่อตรวจสอบว่าฟังก์ชันโยนค่า a DivideByZeroErrorเมื่อหารด้วยศูนย์ได้อย่างถูกต้องหรือไม่
const { expect } = require('chai');
function divide(a, b) {
if (b === 0) {
throw new Error('DivideByZeroError');
}
return a / b;
}
describe('divide', () => {
it('should throw DivideByZeroError when dividing by zero', () => {
expect(() => divide(10, 0)).to.throw('DivideByZeroError');
});
it('should return the correct result when dividing two numbers', () => {
expect(divide(10, 5)).to.equal(2);
});
});
ในตัวอย่างข้างต้น เราใช้to.throwการยืนยันเพื่อตรวจสอบว่าdivideฟังก์ชันส่งค่า a DivideByZeroErrorเมื่อหารด้วยศูนย์ การยืนยันถูกรวมไว้ในฟังก์ชันเพื่อให้สามารถตรวจจับข้อยกเว้นและดำเนินการตรวจสอบที่จำเป็นได้
ด้วยการรวมการทดสอบสำหรับการโยนข้อยกเว้นที่ถูกต้อง เราสามารถมั่นใจได้ว่าฟังก์ชันของเราจัดการกับเงื่อนไขข้อผิดพลาดได้อย่างเหมาะสม และให้ข้อเสนอแนะที่มีความหมายเมื่อเกิดสถานการณ์ที่ไม่คาดคิด สิ่งนี้ช่วยปรับปรุงคุณภาพโดยรวมและความน่าเชื่อถือของโค้ดของเรา
โดยสรุป ฟังก์ชันการทดสอบที่มีข้อยกเว้นเป็นส่วนสำคัญของการทดสอบซอฟต์แวร์ จากthrowการยืนยันของ Chai เราสามารถตรวจสอบได้อย่างง่ายดายว่าฟังก์ชันของเรามีข้อยกเว้นที่คาดไว้เมื่อจำเป็น ด้วยการรวมการทดสอบเหล่านี้เข้ากับกลยุทธ์การทดสอบของเรา เราสามารถปรับปรุงความทนทานของแอปพลิเคชันของเราและมอบประสบการณ์ผู้ใช้ที่ดีขึ้น
ในบทความที่สามของซีรีส์ "Node.js, Mocha และ Chai" เราจะสำรวจวิธีทดสอบฟังก์ชันและวิธีการโดยใช้ Chai Chai เป็นไลบรารีการยืนยันที่มีประสิทธิภาพสำหรับการทดสอบค่าและผลลัพธ์ในโค้ด JavaScript
วิธีการทดสอบวัตถุและพฤติกรรมของพวกเขา
ในการตรวจสอบวิธีการของวัตถุ เราสามารถใช้การยืนยันที่ได้จากกรอบการทดสอบ เช่น Mocha และ Chai การยืนยันเหล่านี้ช่วยให้เราสามารถยืนยันเกี่ยวกับคุณสมบัติและพฤติกรรมของวัตถุได้
ลองพิจารณาตัวอย่างที่เราเรียกวัตถุที่มีcalculatorวิธีการบวก การลบ การคูณ และการหาร เราต้องการให้แน่ใจว่าวิธีการเหล่านี้ให้ผลลัพธ์ที่ถูกต้อง เราสามารถเขียนกรณีทดสอบโดยใช้การยืนยันของ Chai เพื่อตรวจสอบพฤติกรรมของวิธีการเหล่านี้
const { expect } = require('chai');
const calculator = {
add: (a, b) => a + b,
subtract: (a, b) => a - b,
multiply: (a, b) => a * b,
divide: (a, b) => a / b,
};
describe('calculator', () => {
it('should return the correct sum when adding two numbers', () => {
expect(calculator.add(5, 3)).to.equal(8);
});
it('should return the correct difference when subtracting two numbers', () => {
expect(calculator.subtract(5, 3)).to.equal(2);
});
it('should return the correct product when multiplying two numbers', () => {
expect(calculator.multiply(5, 3)).to.equal(15);
});
it('should return the correct quotient when dividing two numbers', () => {
expect(calculator.divide(6, 3)).to.equal(2);
});
});
ในตัวอย่างข้างต้น เราใช้expectการยืนยันของ Chai เพื่อตรวจสอบว่า method ของcalculatorobject ส่งคืนผลลัพธ์ที่คาดหวัง แต่ละกรณีทดสอบมุ่งเน้นไปที่วิธีการเฉพาะและตรวจสอบว่าส่งคืนผลลัพธ์ที่ถูกต้องสำหรับอินพุตที่กำหนดหรือไม่
ด้วยการเรียกใช้กรณีทดสอบเหล่านี้ เราสามารถมั่นใจได้ว่าวิธีการของcalculatorออบเจกต์ทำงานตามที่คาดไว้และให้ผลลัพธ์ที่แม่นยำ
นอกเหนือจากการตรวจสอบค่าที่ส่งคืนของเมธอดแล้ว เรายังสามารถใช้การยืนยันเพื่อตรวจสอบคุณสมบัติและพฤติกรรมอื่นๆ ของวัตถุได้อีกด้วย Chai ให้การยืนยันที่หลากหลายซึ่งช่วยให้เราสามารถยืนยันประเภทต่างๆ บนออบเจกต์ เช่น การตรวจสอบค่าคุณสมบัติ การตรวจสอบการเรียกใช้เมธอด และอื่นๆ
ด้วยการทดสอบวิธีการของออบเจกต์อย่างละเอียด เราสามารถรับประกันความถูกต้องและความน่าเชื่อถือ ซึ่งส่งผลต่อคุณภาพโดยรวมของโค้ดเบสของเรา