Mocha এবং Chai হল জনপ্রিয় JavaScript টেস্টিং ফ্রেমওয়ার্ক, যা Node.js এবং ExpressJS অ্যাপ্লিকেশনের জন্য টেস্টিং ব্যবহৃত হয়। Mocha টেস্ট রানার হিসেবে কাজ করে, এবং Chai একটি assertion লাইব্রেরি হিসেবে ব্যবহার করা হয়, যা টেস্টিংয়ের জন্য assertions (যেমন, assert.equal() বা expect() ) প্রদান করে।
ExpressJS অ্যাপ্লিকেশনের জন্য Mocha এবং Chai ব্যবহার করে টেস্টিং করার মাধ্যমে আপনি নিশ্চিত হতে পারেন যে, আপনার API এবং রাউটগুলো ঠিকভাবে কাজ করছে।
Mocha এবং Chai ইনস্টলেশন
প্রথমে, Mocha এবং Chai ইনস্টল করতে হবে। আপনার ExpressJS প্রজেক্টের ডিরেক্টরিতে গিয়ে নিচের কমান্ডটি রান করুন:
npm install --save-dev mocha chai supertest
- Mocha: টেস্ট রানার হিসেবে ব্যবহৃত হয়।
- Chai: Assertion library, যা টেস্টে ব্যবহার হয়।
- Supertest: HTTP assertion লাইব্রেরি, যা API রিকোয়েস্ট টেস্ট করতে ব্যবহৃত হয়।
Mocha এবং Chai দিয়ে টেস্ট কনফিগারেশন
১. টেস্ট ফোল্ডার তৈরি করা
প্রথমে আপনার প্রজেক্টে একটি টেস্ট ফোল্ডার তৈরি করুন:
my-express-app/
├── app.js # Express অ্যাপ্লিকেশন
├── test/ # টেস্ট ফোল্ডার
│ └── app.test.js # টেস্ট ফাইল
├── package.json # প্যাকেজ কনফিগারেশন
└── package-lock.json # নির্দিষ্ট সংস্করণে প্যাকেজের ডিপেনডেন্সি
২. Express অ্যাপ্লিকেশন তৈরি করা
এখন, আপনার app.js ফাইলটি তৈরি করুন যদি না থাকে, এবং এখানে কিছু সহজ রাউট তৈরি করুন।
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.status(200).send('Hello, world!');
});
app.get('/api/user', (req, res) => {
res.status(200).json({ id: 1, name: 'John Doe' });
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
module.exports = app; // Exporting app for testing purposes
এখানে দুটি রাউট তৈরি করা হয়েছে:
/: একটি সাধারণ গেট রাউট যা 'Hello, world!' বার্তা রিটার্ন করবে।/api/user: একটি API রাউট যা ইউজারের তথ্য JSON আকারে রিটার্ন করবে।
৩. টেস্ট ফাইল তৈরি করা
এখন, test/app.test.js ফাইলে টেস্ট কেসগুলো তৈরি করা হবে।
const request = require('supertest');
const app = require('../app'); // Import the app to test
const chai = require('chai');
const expect = chai.expect;
describe('ExpressJS API Testing', function() {
it('should return status 200 for the home route', function(done) {
request(app)
.get('/')
.expect(200)
.end(function(err, res) {
if (err) return done(err);
expect(res.text).to.equal('Hello, world!');
done();
});
});
it('should return user data for /api/user route', function(done) {
request(app)
.get('/api/user')
.expect(200)
.end(function(err, res) {
if (err) return done(err);
expect(res.body).to.have.property('id');
expect(res.body.id).to.equal(1);
expect(res.body).to.have.property('name');
expect(res.body.name).to.equal('John Doe');
done();
});
});
});
এখানে:
describe(): একটি টেস্ট স্যুট, যেখানে আমরা একাধিক টেস্ট কেস গ룹 করতে পারি।it(): প্রতিটি টেস্ট কেসের জন্য ব্লক।request(app): Supertest ব্যবহার করে Express অ্যাপ্লিকেশনের সাথে HTTP রিকোয়েস্ট করা।expect(): Chai assertion লাইব্রেরি দিয়ে রেসপন্সের ডেটা যাচাই করা।
৪. Mocha রান কনফিগার করা
আপনার package.json ফাইলে Mocha টেস্ট রানার কনফিগার করুন। test স্ক্রিপ্টের মধ্যে Mocha রান করানোর জন্য এই কোডটি যুক্ত করুন:
"scripts": {
"test": "mocha"
}
এখন, আপনি টেস্ট চালানোর জন্য নিচের কমান্ডটি ব্যবহার করতে পারবেন:
npm test
টেস্ট রান এবং ফলাফল
এখন, আপনি npm test চালালে Mocha সমস্ত টেস্ট কেস রান করবে এবং ফলাফল দেখাবে। যদি সবকিছু সঠিকভাবে কাজ করে, আপনি নিম্নলিখিত ফলাফল দেখতে পাবেন:
ExpressJS API Testing
✓ should return status 200 for the home route
✓ should return user data for /api/user route
2 passing (50ms)
এখানে:
- প্রথম টেস্ট কেস
/রাউটটি 200 স্ট্যাটাস কোড রিটার্ন করেছে এবং "Hello, world!" বার্তা পাঠিয়েছে। - দ্বিতীয় টেস্ট কেস
/api/userরাউট থেকে সঠিক ইউজার ডেটা ফিরে এসেছে।
Mocha এবং Chai এর অন্যান্য ফিচার
Before/After Hooks: টেস্টের আগে বা পরে কিছু কোড রান করানোর জন্য
before(),after()ব্যবহার করা যেতে পারে।উদাহরণ:
before(function() { // Runs before any tests console.log('Before tests'); }); after(function() { // Runs after all tests console.log('After tests'); });- Asynchronous Testing: যদি কোনো টেস্ট অ্যাসিনক্রোনাস হয়, তবে
done()কলব্যাক ফাংশন ব্যবহার করতে হয়, যাতে Mocha বুঝতে পারে টেস্টটি শেষ হওয়ার আগে অপেক্ষা করতে হবে।
সারাংশ
Mocha এবং Chai ব্যবহার করে ExpressJS অ্যাপ্লিকেশন টেস্টিং করা একটি শক্তিশালী পদ্ধতি। Mocha টেস্ট রানার এবং Chai assertion লাইব্রেরি ব্যবহার করে আপনি সহজে API রাউট, কনট্রোলার এবং অন্যান্য ফাংশনালিটি পরীক্ষা করতে পারেন। Supertest ব্যবহার করে HTTP রিকোয়েস্ট পাঠানো হয় এবং রেসপন্স যাচাই করা হয়। এই পদ্ধতিটি আপনার অ্যাপ্লিকেশন ডেভেলপমেন্ট প্রক্রিয়ায় একটি উন্নত টেস্টিং স্তর যোগ করে এবং বাগ শনাক্তকরণে সহায়তা করে।
Read more