TypeScript के साथ Docker का एकीकरण परीक्षण: उन्नत स्तर

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

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

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

TypeScript के साथ Docker का एकीकरण परीक्षण: उन्नत स्तर

\n\n

एकीकरण परीक्षण आधुनिक TypeScript अनुप्रयोगों के विकास में एक महत्वपूर्ण चरण है। जब आपका सिस्टम कई माइक्रोसर्विसेज, डेटाबेस, संदेश कतारों और बाहरी API से बना होता है, तो पृथक unit-परीक्षण वास्तविक इंटरैक्शन परिदृश्यों को कवर नहीं कर पाते। Docker आपको उत्पादन के करीब, प्रतिलिपि योग्य, पृथक वातावरण बनाने की अनुमति देता है। इस लेख में, हम Docker का उपयोग करके TypeScript अनुप्रयोगों के एकीकरण परीक्षण की उन्नत तकनीकों पर विचार करेंगे: कंटेनरों की स्थापना से लेकर CI/CD पाइपलाइनों के निर्माण तक।

\n\n

Docker TypeScript एकीकरण परीक्षणों के लिए एक आदर्श उपकरण क्यों है

\n\n

एकीकरण परीक्षण के पारंपरिक दृष्टिकोण अक्सर वातावरण संबंधी समस्याओं से ग्रस्त होते हैं: "यह मेरी मशीन पर काम करता है"। Docker इस समस्या को हल करता है, प्रदान करता है:

\n\n
    \n
  • पृथक्करण — प्रत्येक परीक्षण एक साफ कंटेनर में चलता है, अन्य प्रक्रियाओं को प्रभावित किए बिना
  • \n
  • प्रतिलिपि योग्यता — सभी चरणों में समान वातावरण: स्थानीय रूप से, CI में, staging पर
  • \n
  • गति — हल्के कंटेनर सेकंडों में शुरू हो जाते हैं
  • \n
  • लचीलापन — DB, कैश, कतारों के विभिन्न संस्करणों को आसानी से संयोजित करें
  • \n
\n\n

TypeScript परियोजनाओं के लिए, Docker विशेष रूप से उपयोगी है क्योंकि यह न केवल Node.js रनटाइम का परीक्षण करने की अनुमति देता है, बल्कि TypeScript कंपाइलर, ट्रांसपिलेशन और बिल्ड के साथ इंटरैक्शन का भी परीक्षण करता है।

\n\n

TypeScript परीक्षणों के लिए Docker वातावरण की स्थापना

\n\n

आइए मूल कॉन्फ़िगरेशन से शुरू करें। प्रोडक्शन बिल्ड के लिए और परीक्षणों के लिए अलग Dockerfile बनाएं:

\n\n
# Dockerfile.test\nFROM node:18-alpine AS builder\n\nWORKDIR /app\nCOPY package*.json ./\nRUN npm ci\nCOPY tsconfig.json ./\nCOPY src/ ./src/\n\n# TypeScript बिल्ड\nRUN npm run build\n\n# परीक्षणों के लिए चरण\nFROM node:18-alpine AS test-runner\nWORKDIR /app\nCOPY --from=builder /app/dist ./dist\nCOPY --from=builder /app/node_modules ./node_modules\nCOPY --from=builder /app/package.json ./\nCOPY tests/ ./tests/\nCOPY jest.config.ts ./\n\n# एकीकरण परीक्षण चलाएं\nCMD ["npx", "jest", "--config", "jest.config.ts", "--testMatch", "**/*.integration.test.ts"]
\n\n

कई सेवाओं के प्रबंधन के लिए docker-compose.yml का उपयोग करें:

\n\n
version: '3.8'\nservices:\n  app:\n    build:\n      context: .\n      dockerfile: Dockerfile.test\n    depends_on:\n      postgres:\n        condition: service_healthy\n      redis:\n        condition: service_healthy\n    environment:\n      - DB_HOST=postgres\n      - DB_PORT=5432\n      - REDIS_HOST=redis\n      - REDIS_PORT=6379\n    volumes:\n      - ./tests:/app/tests:ro\n    networks:\n      - test-network\n\n  postgres:\n    image: postgres:15-alpine\n    environment:\n      POSTGRES_DB: testdb\n      POSTGRES_USER: testuser\n      POSTGRES_PASSWORD: testpass\n    healthcheck:\n      test: ["CMD-SHELL", "pg_isready -U testuser -d testdb"]\n      interval: 5s\n      timeout: 5s\n      retries: 5\n    networks:\n      - test-network\n\n  redis:\n    image: redis:7-alpine\n    healthcheck:\n      test: ["CMD", "redis-cli", "ping"]\n      interval: 5s\n      timeout: 3s\n      retries: 5\n    networks:\n      - test-network\n\nnetworks:\n  test-network:\n    driver: bridge
\n\n

TypeScript में उन्नत एकीकरण परीक्षण लिखना

\n\n

अब एक परीक्षण बनाएं जो पूर्ण परिदृश्य की जांच करता है: DB में लेखन, Redis में कैशिंग, और कतार में ईवेंट भेजना। TypeScript कोड से कंटेनरों के गतिशील प्रबंधन के लिए testcontainers लाइब्रेरी का उपयोग करें:

\n\n
// tests/integration/user-registration.integration.test.ts\nimport { GenericContainer, StartedTestContainer, Wait } from 'testcontainers';\nimport { PostgreSqlContainer } from '@testcontainers/postgresql';\nimport { RedisContainer } from '@testcontainers/redis';\nimport axi                

ब्लॉग

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