সবাইকে অভিবাদন! আমি আমার ছাত্র এবং শিক্ষকদের দ্বারা এই নিবন্ধটি লিখতে অনুপ্রাণিত হয়েছিলাম। আমি প্রায়শই সুপারিশ করি যে তারা পরীক্ষা অটোমেশন প্রক্রিয়ার সাথে স্বাচ্ছন্দ্য বোধ করার সাথে সাথে শিখবে। আসুন দেখি REST API পরীক্ষার পরিপ্রেক্ষিতে আপনার পরীক্ষার অটোমেশন কাঠামোতে টাইপস্ক্রিপ্ট ব্যবহার করার বৈশিষ্ট্যগুলি কী কী… জাভাস্ক্রিপ্টে টাইপস্ক্রিপ্ট আপনি একটি পরীক্ষা প্রকল্পের সম্পূর্ণ কোড খুঁজে পেতে পারেন। এখানে টাইপস্ক্রিপ্ট আসুন কী এবং এটি চেয়ে কীভাবে আলাদা সে সম্পর্কে খুব বেশি গভীরে না যাই এবং গুরুত্বপূর্ণ জিনিসটি বর্ণনা করি - . কিন্তু, বেশ গুরুত্বপূর্ণও - এটি সরাসরি ( প্ল্যাটফর্ম) এর উপর নির্ভর করে। টাইপস্ক্রিপ্ট জাভাস্ক্রিপ্টের এটি ভাষা প্রোগ্রামিং JavaScript Node.js একটি প্যাকেজ হিসাবে উপস্থাপন করা হয়েছে, তাই আমি কিছু দুর্দান্ত বৈশিষ্ট্য সহ এটিকে হিসাবে দেখি। TypeScript Node.js জাভাস্ক্রিপ্ট ভাষা সম্পর্কে আরও জানতে এবং এটি কী অফার করে - দয়া করে যান যখন আমরা পরীক্ষা অটোমেশনের ক্ষেত্রে এর বৈশিষ্ট্যগুলি সম্পর্কে কথা বলতে যাচ্ছি… অফিসিয়াল ওয়েবসাইটে প্রকল্প সেটআপ আসুন এ পরীক্ষা অটোমেশন প্রকল্প তৈরির প্রক্রিয়ার মধ্য দিয়ে যাওয়া যাক: TypeScript- একটি প্রকল্প তৈরি করুন। Node.js npm init -y প্যাকেজ ইনস্টল করুন। TypeScript npm i typescript প্রকল্পের জন্য একটি ডিফল্ট কনফিগারেশন তৈরি করুন - । টাইপস্ক্রিপ্ট tsconfig.json npx tsc --init উপরের কমান্ডটি একটি ডিফল্ট কনফিগারেশন ফাইল তৈরি করবে, তবে আমি এটিকে কিছুতে ছোট করার পরামর্শ দিচ্ছি: এরকম { "compilerOptions": { "baseUrl": "./", "module": "esnext", "target": "esnext", "sourceMap": false, "moduleResolution": "node", "allowJs": true, "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "paths": { "*": ["./*"] } } } এই কনফিগারেশনে প্রয়োজনীয় ন্যূনতম রয়েছে: সর্বশেষ সংস্করণ ব্যবহার করে, EcmaScript JSON আমদানি উপলব্ধ করে, আপনাকে আমদানিতে পরম পথ ব্যবহার করতে দেয়। আপনি ব্যবহার করে আপনার কনফিগারেশন প্রসারিত করতে পারেন। অফিসিয়াল ডকুমেন্টেশন সরঞ্জাম নির্বাচন আপনি ইকোসিস্টেমের অফার করা যেকোন টুল ব্যবহার করতে পারেন, কিন্তু আমার অভিজ্ঞতায় - কয়েকটি ভাল কারণে বেছে নেন: Node.js TypeScript-এর সাথে কাজ করা বেশিরভাগ প্রকৌশলী জেস্ট মহান সম্প্রদায় সমর্থন (আপডেট, উত্তর, ডক্স, কোড উদাহরণ), নমনীয় কনফিগারেশন। পূর্বে, আমি প্রকল্পের মূল সেট আপ করার জন্য + ব্যবহার করে মজা পেয়েছি, কিন্তু এখন আমি সাথেও লেগে আছি, কারণ এতে একটি টেস্ট রানার এবং অ্যাসারশন লাইব্রেরি উভয়ই রয়েছে। Mocha Chai জেস্টের সবচেয়ে জনপ্রিয় HTTP ক্লায়েন্ট বলে মনে হচ্ছে, তাই আমি এটিও আপনার বাছাই করার পরামর্শ দিই। Axios বলতে পারি না যে আপনি আপনার সেটআপের জন্য এটি ব্যবহার করতে বাধ্য হয়েছেন, তবে আমি বলছি যে আপনি যখন প্রকল্পগুলি দেখেন তখন এটি স্বাভাবিক জিনিস। এখন, এই প্যাকেজগুলিকে নির্ভরতা হিসাবে ইনস্টল করুন: npm i jest axios টাইপ সংগ্রহ কিছু প্যাকেজ (যেমন ) এর ভিতরে প্রকার থাকে, কিন্তু নেই। এছাড়াও, সঠিকভাবে কাজ করার জন্য এর সাথে একটি প্যাকেজের প্রয়োজন - প্রথমটি বৈশিষ্ট্যগুলি সক্ষম করে এবং দ্বিতীয়টি আপনাকে ব্যবহার করতে দেয়। Axios TypeScript জেস্ট এবং মোচা Jest-এর @types/jest- ts-jest TypeScript IntelliSense তাই মনে রাখবেন - আপনি যখন কিছু প্যাকেজ ব্যবহার করার চেষ্টা করছেন তখন যদি আপনার স্বয়ংসম্পূর্ণ বৈশিষ্ট্য না থাকে - আপনি সম্ভবত টাইপ ঘোষণা অনুপস্থিত করছেন। এর পাশাপাশি -সম্পর্কিত এক্সটেনশন (প্যাকেজ) ইনস্টল করা যাক: টাইপস্ক্রিপ্ট npm i ts-jest @types/jest কনফিগারেশন জন্য একটি কনফিগার প্রিসেট প্রয়োজন, তাই আপনাকে অবশ্যই এটি আপনার কনফিগারে (বা ) ফাইলে ঘোষণা করতে হবে: জেস্টের ts-jest package.json { "jest": { "preset": "ts-jest" } } আপনি যদি পরিকল্পনা করছেন, তাহলে আপনাকে আপনার কনফিগারেশনও সামঞ্জস্য করতে হবে: একটি প্রকল্পের মধ্যে পরম পথ ব্যবহার করার { "jest": { "preset": "ts-jest", "moduleDirectories": [ "node_modules", "<rootDir>" ] } } এই কনফিগারেশন আপনাকে একটি সাধারণ কমান্ড দিয়ে পরীক্ষা চালানোর অনুমতি দেয়... jest সুতরাং, এ আপনার স্ক্রিপ্ট কনফিগার করুন: package.json- পরীক্ষার { "scripts": { "test": "jest" } } এবং তারপরে বা কমান্ডের সাহায্যে যেকোনো সময় আপনার পরীক্ষা চালান। npm test npm run test আমি আপনাকে ইনস্টল করার পরামর্শ দিচ্ছি যদি আপনি একজন ব্যবহারকারী হন - এটি আপনাকে শুধুমাত্র একটি ক্লিকে পছন্দসই পরীক্ষা/স্যুটগুলি / দেয়। এটি একটি অন্তর্নির্মিত বৈশিষ্ট্য। একটি জেস্ট রানার এক্সটেনশন ভিজ্যুয়াল স্টুডিও কোড চালানো ডিবাগ করতে ওয়েবস্টর্মে, কাস্টম প্রকার REST API পরীক্ষায় যে প্রধান বৈশিষ্ট্যটি প্রবর্তন করে তা হল... , অবশ্যই! টাইপস্ক্রিপ্ট প্রকার আপনি আপনার অনুরোধ এবং প্রতিক্রিয়া বডি কেমন হওয়া উচিত তা ঘোষণা করতে পারেন, যেমন, , এবং ইত্যাদি. মূল নাম মান প্রকার একটি উদাহরণ হিসাবে একটি সার্ভার নেওয়া যাক - আমরা একটি প্রকার হিসাবে এন্ডপয়েন্টের জন্য এটির অনুরোধ বডি পেলোড লিখতে পারি: Paysis /auth export type AuthRequestBody = { login: string password: string } এবং প্রতিক্রিয়া বডির জন্য একই - আমাদের অনুরোধে কী সার্ভার পাঠাতে হবে: export type AuthResponseBody = { token?: string message?: string } যেহেতু সাফল্য/ব্যর্থতার পরিস্থিতির জন্য একটি ভিন্ন পেলোড থাকবে - আপনি " এর মাধ্যমে কীগুলিকে "ঐচ্ছিক" হিসাবে চিহ্নিত করতে পারেন চরিত্র ?" একবার এটি হয়ে গেলে - আপনি আপনার পরীক্ষায় অনুরোধ এবং যাচাইকরণ রচনা করতে এই ধরনের ব্যবহার করতে পারেন... অনুরোধ এ, আপনি অনুরোধ কনফিগারেশনের মাধ্যমে কোন বডি পাঠাচ্ছেন তা বলতে পারেন: Axios- const payload: AxiosRequestConfig<AuthRequestBody> = { method: 'post', url: '/auth', data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, } -এ মানে ঠিক এটাই ☝️ AxiosRequestConfig<AuthRequestBody> AuthRequestBody এর মানে হল আপনি পেলোড ব্যবহার করতে বাধ্য হবেন যা অবজেক্টে প্রদত্ত প্রকার এর সাথে মেলে। আপনি যদি কিছু প্রয়োজনীয় ক্ষেত্র সেট করতে ভুলে যান বা কিছু অত্যধিক সেট করতে - আপনি একটি ত্রুটি দেখতে পাবেন৷ data AuthRequestBody প্রতিক্রিয়া একই জিনিস প্রতিক্রিয়া সম্পর্কেও করা যেতে পারে: const response: AxiosResponse<AuthResponseBody> = await client.request(payload) এটি অবজেক্টে স্বয়ংসম্পূর্ণ যোগ করবে, যাতে আপনি বা ক্ষেত্রগুলিতে পৌঁছতে সক্ষম হবেন। response.data response.data.token response.data.message উন্নত সরঞ্জাম উপরের সাধারণ জিনিসগুলি ছাড়াও, সম্ভব। এটি আপনাকে একটি রেসপন্স বডিতে প্রতিটি একক কী চেক করতে দেয় না যে এটি স্কিমার সাথে মেলে কিনা তবে ৷ আপনার কাস্টম প্রকারগুলি থেকে একটি JSON স্কিমা তৈরি করাও পুরো পেলোডটি পরীক্ষা করে দেখুন তাই ধারণা হল: কাস্টম প্রকার থেকে একটি তৈরি করুন। JSON স্কিমা প্রতিক্রিয়া বডি যাচাই করতে একটি কাস্টম ম্যাচার ব্যবহার করুন। MatchSchema-এ বেশ চমৎকার জিনিস, কিন্তু মনে রাখবেন যে এই পরিবর্তনের পরে আপনার পরীক্ষাগুলি অস্পষ্ট হয়ে উঠতে পারে - এটি ঘটে যখন কিছু অতিরিক্ত ক্ষেত্র উপস্থিত হয়, তাই আপনাকে নিয়মিত স্কিমা আপডেট করতে হবে। উপসংহার সেটআপ কঠিন হতে পারে, বিশেষ করে যদি এটি আপনার প্রথমবার হয় তবে এটি মূল্যবান! টাইপস্ক্রিপ্ট আপনি যদি আপনার ইনপুট এবং আউটপুট ডেটা প্রকারের সাথে কভার করেন - আপনি এই অবজেক্টগুলিকে পার্স করার সময় টাইপো বা অন্য কোনো সিনট্যাক্স ত্রুটি করার কোনো উপায় নেই৷ এটি আপনাকে সাধারণ ভুল থেকে বাঁচায় এবং আপনাকে আপনার কোডে আপনার অনুরোধের গঠন দেখতে দেয়, তাই আপনাকে কোনো (যেমন ) খুলতে হবে না এবং এটি কোন বডি অনুরোধ/প্রতিক্রিয়া দেয় তা দেখার জন্য আপনার প্রয়োজনীয় অনুরোধটি সন্ধান করতে হবে। সঙ্গে. HTTP সংগ্রহ পোস্টম্যান আমাকে আপনার অভিজ্ঞতা এবং আপনি এটি সম্পর্কে কি মনে করেন সম্পর্কে জানান.