Node.js টেস্টিং ফ্রেমওয়ার্কের ভূমিকা
আপনার Node.js অ্যাপ্লিকেশনগুলি নির্ভরযোগ্য এবং রক্ষণাবেক্ষণযোগ্য তা নিশ্চিত করতে সহায়তা করে টেস্টিং উন্নয়ন প্রক্রিয়ার একটি গুরুত্বপূর্ণ অংশ।
এই পৃষ্ঠাটি Node.js এনভায়রনমেন্টে সবচেয়ে জনপ্রিয় টেস্টিং ফ্রেমওয়ার্ক এবং টুলের সাথে পরিচয় করিয়ে দেয়, যা আপনাকে আপনার প্রোজেক্টের জন্য সঠিকটি বেছে নিতে সাহায্য করে।
দ্রষ্টব্য:
একটি ভাল পরীক্ষার কাঠামো দ্রুত হওয়া উচিত, সহায়ক ত্রুটির বার্তা প্রদান করা উচিত, বিভিন্ন ধরনের পরীক্ষাকে সমর্থন করা উচিত (ইউনিট, ইন্টিগ্রেশন, e2e) এবং আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোতে ভালোভাবে সংহত করা উচিত।
জনপ্রিয় পরীক্ষার কাঠামো
Node.js :
Jest
Jest হল একটি মজার জাভাস্ক্রিপ্ট টেস্টিং ফ্রেমওয়ার্ক যা Facebook দ্বারা তৈরি করা হয়েছে সরলতার উপর।
এটি একটি শূন্য-কনফিগারেশন টেস্টিং প্ল্যাটফর্ম যা বেশিরভাগ জাভাস্ক্রিপ্ট প্রকল্পের জন্য বাক্সের বাইরে কাজ করে।
এর জন্য সেরা: ন্যূনতম সেটআপ সহ সম্পূর্ণ বৈশিষ্ট্যযুক্ত পরীক্ষা, সামনের দিকে এবং পিছনের দিকের পরীক্ষার জন্য দুর্দান্ত
ইনস্টলেশন
npm install --save-dev jest
উদাহরণ পরীক্ষা
utils/math.js
function sum(a, b) {
if (typeof a !== 'number' || typeof b !== 'number') {
throw new Error('Both arguments must be numbers');
}
return a + b;
}
function divide(a, b) {
if (b === 0) {
throw new Error('Division by zero');
}
return a / b;
}
module.exports = { sum, divide };
__tests__/math.test.js
const { sum, divide } = require('../utils/math');
describe('Math utilities', () => {
describe('sum()', () => {
it('should add two numbers correctly', () => {
expect(sum(1, 2)).toBe(3);
expect(sum(-1, 1)).toBe(0);
});
it('should throw error for non-number inputs', () => {
expect(() => sum('1', 2)).toThrow('Both arguments must be numbers');
});
});
describe('divide()', () => {
it('should divide two numbers correctly', () => {
expect(divide(10, 2)).toBe(5);
});
it('should throw error when dividing by zero', () => {
expect(() => divide(10, 0)).toThrow('Division by zero');
});
});
});
মূল বৈশিষ্ট্য
চলমান পরীক্ষা
# Run all tests
npx jest
# Run tests in watch mode
npx jest --watch
# Run tests matching a specific pattern
npx jest -t "math utilities"
# Generate coverage report
npx jest --coverage
Mocha
Mocha হল একটি বৈশিষ্ট্য সমৃদ্ধ জাভাস্ক্রিপ্ট টেস্টিং ফ্রেমওয়ার্ক যা Node.js এবং ব্রাউজারে চলছে যা অ্যাসিঙ্ক্রোনাস টেস্টিংকে সহজ এবং মজাদার করে তোলে।
সেরা: প্লাগ-ইন এবং ইন্টিগ্রেশনের বিস্তৃত পরিসর সহ নমনীয় পরীক্ষা
ইনস্টলেশন
npm install --save-dev mocha chai
উদাহরণ পরীক্ষা
test/math.test.js
const { expect } = require('chai');
const { sum, divide } = require('../utils/math');
describe('Math Utilities', () => {
describe('sum()', () => {
it('should return the sum of two numbers', () => {
expect(sum(1, 2)).to.equal(3);
expect(sum(-1, 1)).to.equal(0);
});
it('should throw error for non-number inputs', () => {
expect(() => sum('1', 2)).to.throw('Both arguments must be numbers');
});
});
describe('divide()', () => {
it('should divide two numbers correctly', () => {
expect(divide(10, 2)).to.equal(5);
});
it('should throw error when dividing by zero', () => {
expect(() => divide(10, 0)).to.throw('Division by zero');
});
});
});
মূল বৈশিষ্ট্য
চলমান পরীক্ষা
# Add to package.json
"scripts": {
"test": "mocha"
}
# Run tests
npm test
# Run with specific reporter
npx mocha --reporter nyan
# Run with coverage
npx nyc mocha
Vitest
Vitest হল Vite দ্বারা চালিত একটি খুব দ্রুত ইউনিট টেস্টিং ফ্রেমওয়ার্ক, যা জেস্টের সাথে সামঞ্জস্যপূর্ণ কিন্তু অনেক দ্রুত।
এর জন্য সেরা: ইতিমধ্যেই Vite ব্যবহার করা প্রকল্প, বা দ্রুত পরীক্ষা প্রক্রিয়াকরণের প্রয়োজন এমন প্রকল্প
ইনস্টলেশন
npm install -D vitest
উদাহরণ পরীক্ষা
math.test.js
import { describe, it, expect } from 'vitest';
import { sum, divide } from './math.js';
describe('Math Utilities', () => {
it('should add numbers', () => {
expect(sum(1, 2)).toBe(3);
});
it('should throw error for invalid inputs', () => {
expect(() => sum('1', 2)).toThrow('Both arguments must be numbers');
});
});
মূল বৈশিষ্ট্য
তুলনা টেবিল
| গঠন | শূন্য কনফিগারেশন | গতি | অন্তর্নির্মিত mocks | কোড কভারেজ | সেরা |
|---|---|---|---|---|---|
| Jest | ✅ হ্যাঁ | দ্রুত | ✅ হ্যাঁ | ✅ অন্তর্নির্মিত | ন্যূনতম সেটআপ সহ সম্পূর্ণ বৈশিষ্ট্যযুক্ত পরীক্ষা |
| Mocha | ❌ না | দ্রুত | ❌ না (সিনন প্রয়োজন) | ❌ প্রয়োজন NYC | প্রচুর প্লাগ-ইন সহ নমনীয় পরীক্ষা |
| Vitest | ✅ হ্যাঁ | খুব দ্রুত | ✅ হ্যাঁ | ✅ অন্তর্নির্মিত | Vite প্রকল্প, ESM, TypeScript |
| Node.js Assert | ✅ হ্যাঁ | খুব দ্রুত | ❌ না | ❌ কভারেজ টুল প্রয়োজন | সহজ প্রোগ্রাম, কোন নির্ভরতা |