डॉकर के साथ जावास्क्रिप्ट एकीकरण परीक्षण: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

डॉकर के साथ जावास्क्रिप्ट एकीकरण परीक्षण: पूर्ण गाइड



एकीकरण परीक्षण जावास्क्रिप्ट (Node.js) विकास का एक महत्वपूर्ण चरण है। यह आपके एप्लिकेशन के बाहरी सेवाओं: डेटाबेस, API, कैश और कतारों के साथ इंटरैक्शन की जाँच करता है। इन उद्देश्यों के लिए डॉकर का उपयोग आपको परीक्षण वातावरण को अलग करने, इसकी पुनरुत्पादन क्षमता सुनिश्चित करने और "यह मेरी मशीन पर काम करता है" समस्याओं से बचने की अनुमति देता है। इस लेख में, हम डॉकर, डॉकर कम्पोज़ और लोकप्रिय परीक्षण फ्रेमवर्क का उपयोग करके जावास्क्रिप्ट एप्लिकेशन के लिए एकीकरण परीक्षण सेट अप करने का तरीका समझेंगे।



एकीकरण परीक्षण के लिए डॉकर की आवश्यकता क्यों है?



पारंपरिक एकीकरण परीक्षण अक्सर समस्याओं का सामना करता है: विभिन्न डेवलपर मशीनों पर निर्भरताएँ भिन्न हो सकती हैं, डेटाबेस अलग-अलग स्थितियों में हो सकते हैं, और वातावरण सेटअप में घंटों लग सकते हैं। डॉकर इन समस्याओं को हल करता है, प्रदान करता है:



  • अलगाव: प्रत्येक परीक्षण रन एक साफ कंटेनर में होता है।
  • पुनरुत्पादन क्षमता: सभी डेवलपर्स और CI/CD के लिए समान वातावरण।
  • गति: कंटेनर सेकंड में शुरू होते हैं, मिनटों में नहीं।
  • निर्भरता प्रबंधन: PostgreSQL, Redis, RabbitMQ और अन्य सेवाओं को आसानी से शुरू करें।


डॉकर कम्पोज़ के साथ परीक्षण वातावरण सेटअप



प्रोजेक्ट बनाकर शुरू करते हैं। मान लीजिए हमारे पास एक सरल Node.js एप्लिकेशन है जो PostgreSQL में डेटा सहेजता है। फ़ाइल docker-compose.test.yml बनाएँ:



version: '3.8'

services: test-runner: build: context: . dockerfile: Dockerfile.test depends_on: - db - redis environment: - NODE_ENV=test - DATABASE_URL=postgresql://testuser:testpass@db:5432/testdb - REDIS_URL=redis://redis:6379 volumes: - ./coverage:/app/coverage

db: image: postgres:15-alpine environment: POSTGRES_USER: testuser POSTGRES_PASSWORD: testpass POSTGRES_DB: testdb ports: - "5432" tmpfs: - /var/lib/postgresql/data

redis: image: redis:7-alpine ports: - "6379"


PostgreSQL के लिए tmpfs पर ध्यान दें - यह सुनिश्चित करता है कि परीक्षण पूरा होने के बाद डेटा सहेजा नहीं जाएगा, और प्रत्येक रन एक साफ डेटाबेस से शुरू होगा।



परीक्षणों के लिए Dockerfile



Dockerfile.test बनाएँ, जो उत्पादन के बजाय परीक्षण के लिए अनुकूलित है:



FROM node:18-alpine

WORKDIR /app

# निर्भरता परत को कैश करने के लिए केवल package.json कॉपी करेंCOPY package*.json ./RUN npm ci --only=production && npm ci --only=dev

# स्रोत कोड कॉपी करेंCOPY . .

# सेवाओं के तैयार होने की प्रतीक्षा के लिए wait-for-it स्थापित करेंADD https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh /wait-for-it.shRUN chmod +x /wait-for-it.sh

CMD ["sh", "-c", "/wait-for-it.sh db:5432 -- /wait-for-it.sh redis:6379 -- npm test"]


जावास्क्रिप्ट में एकीकरण परीक्षण लिखना



अब परीक्षण स्वयं लिखते हैं। API परीक्षण के लिए Jest और Supertest का उपयोग करें। फ़ाइल tests/integration/user.test.js बनाएँ:



const request = require('supertest');const { app } = require('../src/app');const { Pool } = require('pg');

describe('User API Integration Tests', () => { let pool;

beforeAll(async () => { // परीक्षण DB के लिए कनेक्शन पूल बनाएँ pool = new Pool({ connectionString: process.env.DATABASE_URL });

// परीक्षणों से पहले माइग्रेशन चलाएँ const migrationSQL = ` CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100) NOT NULL, email VARCHAR(255) UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT NOW() ); `; await pool.query(migrationSQL); });

afterAll(as

ब्लॉग

पुस्तक अनुशंसाएँ