Unit Testing এবং Integration Testing হল সঠিক এবং কার্যকর কোডিং এর জন্য অপরিহার্য টেস্টিং কৌশল। যখন আপনি LeafletJS ব্যবহার করেন ম্যাপিং অ্যাপ্লিকেশন তৈরি করতে, তখন আপনি আপনার কোডের বিভিন্ন অংশের জন্য Unit এবং Integration Testing প্রয়োগ করে এটি নিশ্চিত করতে পারেন যে কোড সঠিকভাবে কাজ করছে এবং কোনো ত্রুটি নেই।
এই টিউটোরিয়ালে, আমরা দেখব কীভাবে LeafletJS ব্যবহার করে Unit Testing এবং Integration Testing করা যায়।
১. Unit Testing in LeafletJS
Unit Testing একটি টেস্টিং পদ্ধতি যেখানে কোডের একক অংশ (যেমন একটি ফাংশন বা মেথড) পরীক্ষা করা হয়। LeafletJS এর জন্য unit tests সাধারণত JavaScript ফ্রেমওয়ার্ক (যেমন Jest, Mocha, বা Jasmine) ব্যবহার করে করা হয়।
১.১ Jest Setup for LeafletJS Testing
Jest হল একটি খুব জনপ্রিয় JavaScript testing framework যা unit testing করার জন্য ব্যবহৃত হয়। LeafletJS এর জন্য Jest ব্যবহার করতে, প্রথমে Jest সেটআপ করা প্রয়োজন।
১.১.১ Jest ইনস্টল করা
প্রথমে, আপনার প্রোজেক্টে Jest ইনস্টল করুন:
npm install --save-dev jest
১.১.২ Jest Configuration
Jest এর জন্য configuration ফাইল তৈরি করা যেতে পারে। আপনার package.json ফাইলে Jest কনফিগারেশন এন্ট্রি যোগ করুন:
{
"scripts": {
"test": "jest"
}
}
১.১.৩ Unit Test Example: LeafletJS Map Initialization
একটি সিম্পল unit test তৈরি করা যেটি LeafletJS map initialization টেস্ট করবে:
import L from 'leaflet';
test('Leaflet map initializes correctly', () => {
const map = L.map('map').setView([51.505, -0.09], 13);
expect(map.getCenter().lat).toBeCloseTo(51.505, 3);
expect(map.getCenter().lng).toBeCloseTo(-0.09, 3);
});
এখানে:
- L.map() মেথডটি টেস্ট করা হয়েছে এবং getCenter() মেথড দিয়ে ম্যাপের সেন্টার ল্যাট এবং লং চেক করা হয়েছে।
- toBeCloseTo() ফাংশনটি আসল মানের সাথে নির্দিষ্ট ডিজিট পর্যন্ত তুলনা করে।
১.১.৪ Test Running
আপনার টেস্ট চালানোর জন্য, npm test কমান্ডটি রান করুন:
npm test
২. Integration Testing in LeafletJS
Integration Testing হল কোডের বিভিন্ন অংশ একসাথে কাজ করছে কিনা তা পরীক্ষা করার পদ্ধতি। এটি নিশ্চিত করতে সহায়তা করে যে LeafletJS এর বিভিন্ন ফিচার এবং ফাংশন একে অপরের সাথে সঠিকভাবে কাজ করছে।
২.১ Jest with Puppeteer for Integration Testing
Puppeteer হল একটি Node.js লাইব্রেরি যা headless browser নিয়ন্ত্রণ করে এবং ইন্টারফেসের কাজগুলো পরীক্ষা করে। LeafletJS ম্যাপের জন্য integration tests চালানোর সময়, Puppeteer ব্যবহার করা যেতে পারে।
২.১.১ Puppeteer ইনস্টল করা
প্রথমে Puppeteer ইনস্টল করুন:
npm install --save-dev puppeteer
২.১.২ Integration Test Example: LeafletJS Map Interaction
একটি integration test তৈরি করা, যেখানে ম্যাপে marker ক্লিক করলে পপ-আপ প্রদর্শিত হয়:
const puppeteer = require('puppeteer');
describe('LeafletJS Map Interaction Test', () => {
let browser;
let page;
beforeAll(async () => {
browser = await puppeteer.launch();
page = await browser.newPage();
await page.goto('http://localhost:8080'); // আপনার অ্যাপ্লিকেশনের URL
});
afterAll(async () => {
await browser.close();
});
test('Map marker click opens popup', async () => {
await page.click('.leaflet-marker-icon'); // মার্কারে ক্লিক
const popupText = await page.$eval('.leaflet-popup-content', el => el.textContent);
expect(popupText).toBe('Marker clicked!');
});
});
এখানে:
- puppeteer.launch() ব্রাউজার চালু করে।
- page.click() ম্যাপের মার্কার আইকনে ক্লিক করে।
- $eval() ফাংশনটি ব্যবহার করে পপ-আপের টেক্সট চেক করা হচ্ছে।
২.১.৩ Test Running
Puppeteer ইনটিগ্রেশন টেস্ট চালানোর জন্য, jest রান করুন:
npm test
৩. Mocking LeafletJS Methods in Unit Testing
Mocking হল টেস্টিংয়ের একটি পদ্ধতি যেখানে আপনি আসল ফাংশন বা মেথডকে রিপ্লেস করেন একটি কাস্টম ফাংশন দিয়ে। LeafletJS এর কিছু ফাংশনকে মক করে টেস্ট করা যেতে পারে।
৩.১ Mocking LeafletJS Methods Example
import L from 'leaflet';
// Leaflet map initialization মক করা
jest.mock('leaflet', () => {
return {
map: jest.fn().mockReturnValue({
setView: jest.fn(),
getCenter: jest.fn().mockReturnValue({ lat: 51.505, lng: -0.09 }),
}),
};
});
test('Leaflet map initializes correctly with mocked methods', () => {
const map = L.map('map').setView([51.505, -0.09], 13);
expect(map.setView).toHaveBeenCalledWith([51.505, -0.09], 13);
expect(map.getCenter()).toEqual({ lat: 51.505, lng: -0.09 });
});
এখানে:
- jest.mock() ব্যবহার করে Leaflet মডিউলের map ফাংশন মক করা হয়েছে।
- setView() এবং getCenter() মক মেথড হিসেবে ব্যবহৃত হয়েছে।
৪. Testing LeafletJS with Sinon for Spying
Sinon হল একটি জাভাস্ক্রিপ্ট লাইব্রেরি যা spies, stubs, এবং mocks প্রদান করে, যেগুলো unit এবং integration testing এর জন্য ব্যবহৃত হয়।
৪.১ Sinon Setup for LeafletJS Testing
৪.১.১ Sinon ইনস্টল করা
npm install --save-dev sinon
৪.১.২ Sinon Testing Example
import L from 'leaflet';
import sinon from 'sinon';
test('Leaflet map setView method is called', () => {
const map = L.map('map').setView([51.505, -0.09], 13);
const spy = sinon.spy(map, 'setView');
map.setView([51.51, -0.1], 14);
expect(spy.calledOnce).toBe(true);
expect(spy.calledWith([51.51, -0.1], 14)).toBe(true);
});
এখানে:
- sinon.spy() ব্যবহার করে setView() মেথডের উপর স্পাই করা হয়েছে।
- calledOnce এবং calledWith() মেথডের মাধ্যমে টেস্ট করা হচ্ছে যে মেথডটি সঠিকভাবে কল হয়েছে কিনা।
সারাংশ
Unit Testing এবং Integration Testing ব্যবহার করে আপনি LeafletJS ম্যাপের বিভিন্ন ফিচার পরীক্ষা করতে পারেন। Jest, Mocha, Puppeteer, এবং Sinon এর মতো টুল ব্যবহার করে আপনি ম্যাপের ফাংশনালিটি, মার্কার ক্লিক, পপ-আপ এবং অন্যান্য ইন্টারঅ্যাকটিভ ফিচারের পরীক্ষা করতে পারবেন। Mocking, spying, এবং stubbing এর মাধ্যমে আপনি বাহ্যিক ডিপেন্ডেন্সি ছাড়া একক ফাংশন বা পদ্ধতি পরীক্ষা করতে পারবেন।
Read more