TypeScript में परीक्षण: फ्रेमवर्क, उपकरण और सर्वोत्तम अभ्यास
\n\nTypeScript, JavaScript पर एक स्थिर रूप से टाइप की गई परत है, जिसका आधुनिक वेब प्रोजेक्ट्स में सक्रिय रूप से उपयोग किया जाता है। हालाँकि, टाइपिंग स्वयं तार्किक त्रुटियों, रनटाइम बग या घटकों के गलत कामकाज की अनुपस्थिति की गारंटी नहीं देती है। इसलिए, TypeScript अनुप्रयोगों का परीक्षण विकास का एक अनिवार्य चरण है। इस लेख में, हम TypeScript परीक्षण के लिए मुख्य फ्रेमवर्क और उपकरणों, उनकी विशेषताओं, उपयोग के उदाहरणों और चयन के लिए सिफारिशों पर विस्तार से चर्चा करेंगे।
\n\n1. TypeScript परीक्षण JavaScript से क्यों अलग है?
\nTypeScript स्थिर प्रकार की जाँच जोड़ता है, लेकिन यह यूनिट परीक्षण, एकीकरण परीक्षण या E2E परीक्षणों को प्रतिस्थापित नहीं करता है। हालाँकि, TypeScript लाभ प्रदान करता है:
\n- \n
- प्रकार सुरक्षा — कंपाइलर विकास के दौरान कई त्रुटियों को पकड़ लेता है। \n
- बेहतर IDE समर्थन — ऑटो-पूर्णता, रीफैक्टरिंग, नेविगेशन। \n
- परीक्षण कोड की शुद्धता — प्रकार स्वयं परीक्षणों में बग से बचने में मदद करते हैं। \n
साथ ही, TypeScript परीक्षण के लिए फ्रेमवर्क आमतौर पर ट्रांसपिलेशन (ts-jest, esbuild, swc) के माध्यम से काम करते हैं या TypeScript के लिए अंतर्निहित समर्थन का उपयोग करते हैं।
\n\n2. यूनिट परीक्षण के लिए मुख्य फ्रेमवर्क
\n\nJest
\nJavaScript और TypeScript के परीक्षण के लिए सबसे लोकप्रिय फ्रेमवर्क। Facebook द्वारा समर्थित, इसमें अंतर्निहित assertion लाइब्रेरी, मॉक, स्पाई और कोड कवरेज है।
\nस्थापना और कॉन्फ़िगरेशन:
\nnpm install --save-dev jest @types/jest ts-jest typescript\njest.config.ts में कॉन्फ़िगरेशन:
export default {\n preset: 'ts-jest',\n testEnvironment: 'node',\n roots: ['<rootDir>/src']\n};\nपरीक्षण उदाहरण:
\n// sum.ts\nexport function sum(a: number, b: number): number {\n return a + b;\n}\n\n// sum.test.ts\nimport { sum } from './sum';\n\ndescribe('sum function', () => {\n it('should add two numbers correctly', () => {\n expect(sum(2, 3)).toBe(5);\n });\n\n it('should handle negative numbers', () => {\n expect(sum(-1, -2)).toBe(-3);\n });\n});\n\nVitest
\nJest का एक आधुनिक विकल्प, जो Vite प्रोजेक्ट्स के लिए अनुकूलित है। यह हुड के नीचे esbuild/swc के उपयोग के कारण उच्च गति से काम करता है। बॉक्स से बाहर TypeScript के साथ पूरी तरह से संगत।
\nस्थापना:
\nnpm install --save-dev vitest\nपरीक्षण उदाहरण (अतिरिक्त कॉन्फ़िगरेशन के बिना):
\n// utils.ts\nexport const capitalize = (str: string): string => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n};\n\n// utils.test.ts\nimport { describe, it, expect } from 'vitest';\nimport { capitalize } from './utils';\n\ndescribe('capitalize', () => {\n it('should capitalize first letter', () => {\n expect(capitalize('hello')).toBe('Hello');\n });\n\n it('should handle empty string', () => {\n expect(capitalize('')).toBe('');\n });\n});\n\nMocha + Chai
\nलचीले परीक्षण के लिए क्लासिक जोड़ी। Mocha — test runner, Chai — assertions के लिए लाइब्रेरी। TypeScript के लिए अतिरिक्त सेटअप की आवश्यकता है।
\nस्थापना:
\nnpm install --save-dev mocha chai @types/mocha @types/chai ts-node typescript\nउदाहरण:
\nimport { expect } from 'chai';\nimport { describe, it } from 'mocha';\n\nfunction multiply(a: number, b: number): number {\n return a * b;\n}\n\ndescribe('multiply', () => {\n it('should multiply two numbers', () => {\n expect(multiply(3, 4)).to.equal(12);\n });\n\n it('should handle zero', () => {\n expect(multiply(5, 0)).to.equal(0);\n });\n});\n\n3. एकीकरण और E2E परीक्षण के लिए उपकरण
\n\nCypress
\nवेब अनुप्रयोगों के end-to-end परीक्षण के लिए फ्रेमवर्क। ब्राउज़र में काम करता है, इसमें सुविधाजनक डैशबोर्ड, स्वचालित प्रतीक्षाएँ हैं।
पुस्तकालय में भी
Symfony/Security PHP: पूर्ण गाइड, उदाहरण और सुरक्षा ट्यूटोरियल
Kotlin के लिए OAuth क्लाइंट: API प्रमाणीकरण के लिए Ktor OAuth लाइब्रेरी
PHP में GraphQL: API बनाने के लिए webonyx/graphql-php और Lighthouse लाइब्रेरीज़
Vitest के साथ TypeScript में परीक्षण
Swift में डेटाबेस माइग्रेशन: iOS/macOS के लिए उपकरण और अभ्यास