paint-brush
REST API স্বয়ংক্রিয় পরীক্ষায় টাইপস্ক্রিপ্ট বনাম জাভাস্ক্রিপ্টদ্বারা@bormando
3,333 পড়া
3,333 পড়া

REST API স্বয়ংক্রিয় পরীক্ষায় টাইপস্ক্রিপ্ট বনাম জাভাস্ক্রিপ্ট

দ্বারা Dmitrii Bormotov6m2023/08/04
Read on Terminal Reader
Read this story w/o Javascript

অতিদীর্ঘ; পড়তে

TypeScript হল একটি প্রোগ্রামিং ভাষা যা Node.js ইকোসিস্টেমে প্যাকেজ হিসেবে উপস্থাপিত হয়। এই প্যাকেজ ব্যবহার করে, আপনি করতে পারেন: 1. আপনার প্রকল্পে সংক্ষিপ্ত (পরম) আমদানি করুন। 2. আপনার অনুরোধ এবং প্রতিক্রিয়া পেলোডের জন্য কাস্টম প্রকার তৈরি করুন। 3. আপনার কোডে কম সিনট্যাক্স ভুল করতে বুদ্ধিমত্তা এবং টাইপ চেকিং বৈশিষ্ট্য ব্যবহার করুন। কাস্টম প্রকারগুলি আপনার পেলোড ডেটার জন্য একটি ডকুমেন্টেশন হিসাবেও কাজ করে - এর জন্য আপনাকে আর আপনার বাহ্যিক সংগ্রহ/সরঞ্জামগুলি পরীক্ষা করতে হবে না!
featured image - REST API স্বয়ংক্রিয় পরীক্ষায় টাইপস্ক্রিপ্ট বনাম জাভাস্ক্রিপ্ট
Dmitrii Bormotov HackerNoon profile picture
0-item

সবাইকে অভিবাদন!


আমি আমার ছাত্র এবং শিক্ষকদের দ্বারা এই নিবন্ধটি লিখতে অনুপ্রাণিত হয়েছিলাম। আমি প্রায়শই সুপারিশ করি যে তারা জাভাস্ক্রিপ্টে পরীক্ষা অটোমেশন প্রক্রিয়ার সাথে স্বাচ্ছন্দ্য বোধ করার সাথে সাথে টাইপস্ক্রিপ্ট শিখবে। আসুন দেখি REST API পরীক্ষার পরিপ্রেক্ষিতে আপনার পরীক্ষার অটোমেশন কাঠামোতে টাইপস্ক্রিপ্ট ব্যবহার করার বৈশিষ্ট্যগুলি কী কী…


আপনি এখানে একটি পরীক্ষা প্রকল্পের সম্পূর্ণ কোড খুঁজে পেতে পারেন।

টাইপস্ক্রিপ্ট

আসুন টাইপস্ক্রিপ্ট কী এবং এটি জাভাস্ক্রিপ্টের চেয়ে কীভাবে আলাদা সে সম্পর্কে খুব বেশি গভীরে না যাই এবং গুরুত্বপূর্ণ জিনিসটি বর্ণনা করি - এটি প্রোগ্রামিং ভাষা . কিন্তু, বেশ গুরুত্বপূর্ণও - এটি সরাসরি JavaScript ( Node.js প্ল্যাটফর্ম) এর উপর নির্ভর করে।


TypeScript একটি Node.js প্যাকেজ হিসাবে উপস্থাপন করা হয়েছে, তাই আমি কিছু দুর্দান্ত বৈশিষ্ট্য সহ এটিকে জাভাস্ক্রিপ্ট হিসাবে দেখি।


ভাষা সম্পর্কে আরও জানতে এবং এটি কী অফার করে - দয়া করে অফিসিয়াল ওয়েবসাইটে যান যখন আমরা পরীক্ষা অটোমেশনের ক্ষেত্রে এর বৈশিষ্ট্যগুলি সম্পর্কে কথা বলতে যাচ্ছি…

প্রকল্প সেটআপ

আসুন TypeScript- এ পরীক্ষা অটোমেশন প্রকল্প তৈরির প্রক্রিয়ার মধ্য দিয়ে যাওয়া যাক:


  1. একটি Node.js প্রকল্প তৈরি করুন।

    npm init -y

  2. TypeScript প্যাকেজ ইনস্টল করুন।

    npm i typescript

  3. প্রকল্পের জন্য একটি ডিফল্ট টাইপস্ক্রিপ্ট কনফিগারেশন তৈরি করুন - 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 ব্যবহার করে মজা পেয়েছি, কিন্তু এখন আমি জেস্টের সাথেও লেগে আছি, কারণ এতে একটি টেস্ট রানার এবং অ্যাসারশন লাইব্রেরি উভয়ই রয়েছে।


Axios সবচেয়ে জনপ্রিয় HTTP ক্লায়েন্ট বলে মনে হচ্ছে, তাই আমি এটিও আপনার বাছাই করার পরামর্শ দিই।


বলতে পারি না যে আপনি আপনার সেটআপের জন্য এটি ব্যবহার করতে বাধ্য হয়েছেন, তবে আমি বলছি যে আপনি যখন প্রকল্পগুলি দেখেন তখন এটি স্বাভাবিক জিনিস।


এখন, এই প্যাকেজগুলিকে নির্ভরতা হিসাবে ইনস্টল করুন:

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 স্কিমা তৈরি করাও সম্ভব। এটি আপনাকে একটি রেসপন্স বডিতে প্রতিটি একক কী চেক করতে দেয় না যে এটি স্কিমার সাথে মেলে কিনা তবে পুরো পেলোডটি পরীক্ষা করে দেখুন


তাই ধারণা হল:


  1. কাস্টম প্রকার থেকে একটি JSON স্কিমা তৈরি করুন।
  2. প্রতিক্রিয়া বডি যাচাই করতে MatchSchema-এ একটি কাস্টম ম্যাচার ব্যবহার করুন।


বেশ চমৎকার জিনিস, কিন্তু মনে রাখবেন যে এই পরিবর্তনের পরে আপনার পরীক্ষাগুলি অস্পষ্ট হয়ে উঠতে পারে - এটি ঘটে যখন কিছু অতিরিক্ত ক্ষেত্র উপস্থিত হয়, তাই আপনাকে নিয়মিত স্কিমা আপডেট করতে হবে।

উপসংহার

টাইপস্ক্রিপ্ট সেটআপ কঠিন হতে পারে, বিশেষ করে যদি এটি আপনার প্রথমবার হয় তবে এটি মূল্যবান!


আপনি যদি আপনার ইনপুট এবং আউটপুট ডেটা প্রকারের সাথে কভার করেন - আপনি এই অবজেক্টগুলিকে পার্স করার সময় টাইপো বা অন্য কোনো সিনট্যাক্স ত্রুটি করার কোনো উপায় নেই৷ এটি আপনাকে সাধারণ ভুল থেকে বাঁচায় এবং আপনাকে আপনার কোডে আপনার অনুরোধের গঠন দেখতে দেয়, তাই আপনাকে কোনো HTTP সংগ্রহ (যেমন পোস্টম্যান ) খুলতে হবে না এবং এটি কোন বডি অনুরোধ/প্রতিক্রিয়া দেয় তা দেখার জন্য আপনার প্রয়োজনীয় অনুরোধটি সন্ধান করতে হবে। সঙ্গে.


আমাকে আপনার অভিজ্ঞতা এবং আপনি এটি সম্পর্কে কি মনে করেন সম্পর্কে জানান.