এই ব্লগ পোস্টে আমি জাভাস্ক্রিপ্টের জন্য ইউনিট পরীক্ষা কীভাবে লিখব তা ব্যাখ্যা করব। উদাহরণস্বরূপ, আমরা জুঁই এবং টিএস-মোকিটো ব্যবহার করছি তবে নীতিটি প্রতিটি পরীক্ষার কাঠামোর ক্ষেত্রে প্রয়োগ করা উচিত। আমি এখানে শুধু জুঁইয়ের পরিবর্তে দুটি ফ্রেমওয়ার্ক ব্যবহার করছি? ঠিক আছে, আমার মতে, জুঁই ম্যাজিক ওয়্যারের উপর অনেক বেশি নির্ভর করে যা রিফ্যাক্টরিংয়ের সময় সমস্যা দিতে পারে এবং অনেক ক্ষেত্রে অটোকম্প্লিশনকে অসম্ভব করে তোলে (আপনার আইডিই কতটা ভাল তার উপর নির্ভর করে)। টিএস-মকিতো একটি মজাদার কাঠামো যা আপনাকে ক্লাসের উপর ভিত্তি করে একটি মক তৈরি করতে দেয়, তাই আপনাকে এটির উপহাস করার জন্য পদ্ধতির নাম উল্লেখ করতে হবে না।

টাইপস্ক্রিপ্টের জন্য আরও ভাল উপহাসের ফ্রেমওয়ার্ক রয়েছে তবে আমার অভিজ্ঞতা টিএস-মকিতো সহ, তাই আমি এটি এই ব্লগ পোস্টের উদাহরণগুলির জন্য ব্যবহার করব। বা কোড উদাহরণটি আমি নিজের জন্য একটি প্রকল্প তৈরি করতে কৌণিক সিএলআই ব্যবহার করেছি, তবে আমি এই পরীক্ষার কেসগুলি সম্পূর্ণ স্বাধীন রাখতে কোনও কৌনিক পরীক্ষার সরঞ্জাম ব্যবহার করব না। কৌণিক সিএলআই হ’ল সবকিছু দ্রুত এবং দ্রুত চালনার সহজ উপায়।

অধিকার

এটি আপনাকে দ্রুত আপনার পরীক্ষার লগ থেকে দেখতে দেয় কোন পদ্ধতিতে কোন শ্রেণিতে একটি বাগ রয়েছে। আমি ব্যক্তিগতভাবে সর্বদা অবজেক্টটিকে কল করার চেষ্টা করি যে আপনি ‘কম্পোনেন্টউডারস্টেস্ট’ বা ‘সার্ভিস ইউেন্ডটেষ্ট’ এর মতো কিছু পরীক্ষা করছেন। এটি আপনাকে ইউনিট পরীক্ষায় খুব দ্রুত দেখতে দেয়, ঠিক কোন আইটেমটি পরীক্ষা করা হচ্ছে।

আপনি যখন নিজের শ্রেণীর কিছু নির্ভরশীলতা নিয়ে মজা করতে চান, আপনি সর্বদা পরীক্ষার শীর্ষে সমস্ত বিদ্রূপ ঘোষণা করার আগে (প্রথম) কল করা উচিত এবং আপনার প্রথমটির মধ্যে এগুলি শুরু করা উচিত। এর কারণ হ’ল আমরা প্রথমে এবং উদ্যোগে আমাদের বিদ্রূপগুলি ঘোষণা করতে চাই না, কারণ আপনি প্রতিটি পরীক্ষার জন্য নতুন ব্যঙ্গ চাই।

তাহলে এখানে ঠিক কী ঘটে? প্রথমে আমরা carService.getCarsAsPromise () পদ্ধতি এবং মজা করি এবং বলি যে এটি সর্বদা এমন একটি প্রতিশ্রুতি ফিরিয়ে আনা উচিত যা গাড়ির তালিকার সাথে সমাধান করে। তারপরে আমরা যে পদ্ধতিটি পরীক্ষা করছি এটি কল করি, আমরা এটির সমাধানের জন্য অপেক্ষা করছি (প্রতীক্ষিত কীওয়ার্ডটি ব্যবহার করে)। পরে আমরা প্রত্যাশা করি যে ফিরে আসা অ্যারে কেবলমাত্র লাল পোর্শ থাকবে। এখন, এই পুরো জিনিসটি কি? এই ক্ষেত্রে, getCarsAsPromise () ব্যর্থ হওয়া উচিত, এটি ক্যাচ ব্লকে চলবে এবং পরীক্ষাটি ব্যর্থ হবে।

জেসমিন যে বার্তাটি প্রদর্শিত হবে তা হ’ল ত্রুটির জন্য দেওয়া ত্রুটি বার্তা। উদাহরণস্বরূপ, যদি getCarsAsPromise () প্রতিশ্রুতি ফেরতের মান ত্রুটি বার্তা ‘কিছু ভুল হয়ে গেছে’ দিয়ে প্রত্যাখ্যান করা হয়, তবে বার্তাটি দিয়ে পরীক্ষাটি ব্যর্থ হবে: কিছু ভুল হয়েছে। । অবশেষে ব্লকে, আমরা জুঁইকে একটি ফাংশন বলি যে আমাদের পরীক্ষা করা হয়েছে, আমরা অবশেষে এটি ব্লকে কল করি, কারণ প্রতিশ্রুতির ফলাফল নির্বিশেষে, শেষ ব্লকের কোডটি সর্বদা কার্যকর হবে।

আপনি যদি ঘোষণার সময় আপনার মক একবার শুরু করেন তবে পদ্ধতি কল গণনা এবং মক রিটার্ন মানগুলি বের করা হবে না। এটি পরীক্ষাগুলি একে অপরের আউটপুটকে প্রভাবিত করতে পারে, তাই তারা সফলভাবে বা ব্যর্থতার সাথে সম্পূর্ণ করতে পারে, যে ক্রমে চালিত হয় তার উপর নির্ভর করে এটি ডিবাগ করার ক্ষেত্রে মাথা ব্যথা হতে পারে। আপনি যদি প্রথম থেকেই তা বুঝতে না পারেন।

একটি ইউনিট পরীক্ষা লিখুন

প্রতিটি ইউনিট পরীক্ষার 3 টি অংশ রয়েছে। প্রথম অংশটি সেটআপ, যেখানে আপনি কিছু মান সেট করে এবং প্রয়োজনীয় পদ্ধতি কলগুলির জন্য মজা করেন। দ্বিতীয় অংশটি আপনার পরীক্ষা করা পদ্ধতির আসল কল। শেষ অংশটি যাচাইকরণ, যেখানে আপনি আউটপুটটি সঠিক বা সঠিক পদ্ধতিগুলি বলা হয়েছে কিনা তা পরীক্ষা করে দেখবেন। পঠনযোগ্যতার জন্য, প্রতিটি অংশের মধ্যে একটি ফাঁকা রেখা ছেড়ে দিন যাতে আপনি আপনার সেটআপ, কল এবং যাচাইকরণ অংশটি কী তা এক নজরে পরিষ্কার করে দেখতে পারেন।

অ্যাসিনক্রোনাস পরীক্ষা

অ্যাসিঙ্ক কোডে চিন্তাভাবনা একটি চ্যালেঞ্জ হতে পারে, বিশেষত যখন আপনি জাভাস্ক্রিপ্ট দিয়ে নতুন বিকাশকারী হিসাবে শুরু করেন বা এমন ভাষা থেকে আসে যা বেশিরভাগের সাথে সিঙ্ক্রোনাস কোড নিয়ে কাজ করে।

প্রতিশ্রুতি এবং মানদণ্ড উভয়ই দিয়ে।

প্রতিশ্রুতি এবং অবজারভেটরি উভয়ের জন্যই আমি এমন পদ্ধতিগুলি পরীক্ষা করব যা সর্বাধিক সাধারণ ব্যবহারের ধরণগুলি দেখায়। একটি দৃশ্য হ’ল যেখানে আপনি কেবল অবিচ্ছিন্নভাবে কিছু পান এবং একটি অঞ্চলে এর মান নির্ধারণ করেন, অন্য দৃশ্যটি কিছুটা জটিল, যেখানে সমাধান হওয়ার আগে কিছু পার্শ্ব প্রতিক্রিয়া সহ আপনি অবিচ্ছিন্নভাবে কিছু পান। হয়, এবং এর সমাধানের পরে আরও কিছু পার্শ্ব প্রতিক্রিয়া রয়েছে। যদি এটি জটিল মনে হয় তবে চিন্তা করবেন না, খুব শীঘ্রই এটি স্পষ্ট হয়ে উঠবে।