डॉकर के साथ जावास्क्रिप्ट इंटीग्रेशन टेस्टिंग: उन्नत स्तर

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

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

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

डॉकर के साथ जावास्क्रिप्ट इंटीग्रेशन टेस्टिंग: उन्नत स्तर

\n\n

इंटीग्रेशन टेस्टिंग आधुनिक वेब एप्लिकेशन विकास का एक महत्वपूर्ण चरण है। यह सिस्टम के विभिन्न घटकों: डेटाबेस, कैश, बाहरी API और एप्लिकेशन के बीच इंटरैक्शन की जांच करने की अनुमति देता है। Docker इस प्रक्रिया को पूर्वानुमानित, पृथक और पुनरुत्पादनीय बनाता है। इस लेख में, हम Docker का उपयोग करके जावास्क्रिप्ट (Node.js) इंटीग्रेशन टेस्टिंग की उन्नत तकनीकों पर चर्चा करेंगे।

\n\n

इंटीग्रेशन टेस्टिंग में Docker क्यों?

\n

पारंपरिक इंटीग्रेशन टेस्टिंग को इन समस्याओं का सामना करना पड़ता है:

\n
    \n
  • डेवलपर, CI और प्रोडक्शन एनवायरनमेंट में अंतर।
  • \n
  • साझा डेटाबेस में डेटा का दूषित होना।
  • \n
  • निर्भरताओं (Redis, PostgreSQL, Kafka) को चलाने में कठिनाई।
  • \n
\n

Docker हल्के, पृथक कंटेनर प्रदान करके इन समस्याओं का समाधान करता है। प्रत्येक परीक्षण अपना स्वयं का बुनियादी ढांचा चला सकता है, और समाप्त होने पर उसे नष्ट कर सकता है। यह परिणामों की शुद्धता और पुनरावृत्ति सुनिश्चित करता है।

\n\n

Docker Compose के साथ टेस्ट एनवायरनमेंट सेटअप करना

\n

उन्नत परीक्षण के लिए, हम docker-compose.yml का उपयोग करेंगे, जो परीक्षणों के लिए आवश्यक सभी सेवाओं का वर्णन करता है: एप्लिकेशन, डेटाबेस, कैश और मॉक-सर्वर।

\n\n

उदाहरण docker-compose.test.yml:

\n
version: '3.8'\nservices:\n  app:\n    build: .\n    environment:\n      - NODE_ENV=test\n      - DB_HOST=postgres_test\n      - REDIS_HOST=redis_test\n      - MOCK_SERVER_URL=http://mock-server:8080\n    depends_on:\n      - postgres_test\n      - redis_test\n      - mock-server\n    command: ["npm", "run", "test:integration"]\n\n  postgres_test:\n    image: postgres:15-alpine\n    environment:\n      POSTGRES_DB: testdb\n      POSTGRES_USER: test\n      POSTGRES_PASSWORD: test\n    tmpfs: /var/lib/postgresql/data\n\n  redis_test:\n    image: redis:7-alpine\n    tmpfs: /data\n\n  mock-server:\n    image: mockserver/mockserver:latest\n    environment:\n      MOCKSERVER_LOG_LEVEL: ERROR\n
\n\n

मुख्य बिंदु:

\n
    \n
  • tmpfs: DB और Redis डेटा RAM में संग्रहीत होता है, जिससे परीक्षण तेज़ होते हैं।
  • \n
  • mock-server: बाहरी API के अनुकरण के लिए पृथक सेवा।
  • \n
  • NODE_ENV=test: एप्लिकेशन को टेस्ट कॉन्फ़िगरेशन पर स्विच करता है।
  • \n
\n\n

Testcontainers के साथ इंटीग्रेशन टेस्ट लिखना

\n

Node.js के लिए testcontainers लाइब्रेरी आपको सीधे परीक्षणों से प्रोग्रामेटिक रूप से कंटेनरों को प्रबंधित करने की अनुमति देती है। यह लचीलापन प्रदान करता है: आप प्रत्येक परीक्षण सेट के लिए विशिष्ट कंटेनर चला सकते हैं।

\n\n

स्थापना:

\n
npm install --save-dev testcontainers
\n\n

PostgreSQL के साथ परीक्षण का उदाहरण:

\n
const { GenericContainer } = require('testcontainers');\nconst { Client } = require('pg');\n\ndescribe('User Repository Integration Test', () => {\n  let container;\n  let client;\n\n  beforeAll(async () => {\n    // PostgreSQL कंटेनर शुरू करें\n    container = await new GenericContainer('postgres:15-alpine')\n      .withEnvironment({\n        POSTGRES_DB: 'testdb',\n        POSTGRES_USER: 'test',\n        POSTGRES_PASSWORD: 'test'\n      })\n      .withExposedPorts(5432)\n      .start();\n\n    // कंटेनर से कनेक्ट करें\n    client = new Client({\n      host: container.getHost(),\n      port: container.getMappedPort(5432),\n      database: 'testdb',\n      user: 'test',\n      password: 'test'\n    });\n    await client.connect();\n\n    // स्कीमा बनाएँ\n    await client.query(`\n      CREATE TABLE users (\n        id SERIAL PRIMARY KEY,\n        name VARCHAR(100),\n        email VARCHAR(100) UNIQUE\n      )\n    `);\n  });\n\n  afterAll(async () => {\n    await client.end();\n    await container.stop();\n  });\n\n  test('should insert and retrieve user', async () => {\n    await client.query(\n                

ब्लॉग

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