পরীক্ষিত চালিত বিকাশের সাথে একটি লারাভেল REST এপিআই তৈরি করুন

পরীক্ষিত চালিত লারাভেল উন্নয়ন

টিডিডি এবং চৌকস বিকাশের পদ্ধতির অন্যতম পথপ্রদর্শক জেমস গ্রেনিংয়ের একটি বিখ্যাত উক্তি রয়েছে:

আপনি যদি পরীক্ষা-চালিত বিকাশ না করে থাকেন তবে ডিবাগ বিকাশ করুন - জেমস গ্রেনিং

আজ আমরা পরীক্ষার দ্বারা চালিত লারাভেল ট্রিপ নিতে যাচ্ছি। আমরা পোস্টম্যান বা ব্রাউজারটি না খোলে প্রমাণীকরণ এবং সিআরইউডি ফাংশন সহ একটি লারাভেল আরএসটি এপিআই তৈরি করি।

দ্রষ্টব্য: এই অনুকরণীয় পদ্ধতিটি ধরে নিয়েছে যে আপনি লারাভেল এবং পিএইচপিউনিটের প্রাথমিক ধারণাগুলি বুঝতে পেরেছেন। যদি আপনি যে উপায় পেয়েছি? চলুন।

প্রকল্প স্থাপন করুন

সুরকার তৈরি-প্রকল্প - প্রিফিয়ার-ডিস্ট লারাভেল / লারাভেল টিডিডি-যাত্রার সাথে একটি নতুন লারাভেল প্রকল্প তৈরি শুরু করুন।

এরপরে আমাদের ব্যবহার করা হবে এমন প্রমাণীকরণ স্ক্যাফোল্ডার চালানো দরকার এবং তারপরে পিএইচপি আর্টিজান মেক: চালাবেন, পিএইচপি আর্টিজান মাইগ্রেট চালান।

উত্পন্ন রুট এবং দর্শনগুলি ব্যবহার করা হয় না। আমরা এই প্রকল্পের জন্য jwt-auth ব্যবহার করব। সুতরাং এগিয়ে যান এবং আপনার অ্যাপ্লিকেশন এ সেট আপ।

দ্রষ্টব্য: JWT জেনারেট কমান্ডের সাথে আপনার যদি ত্রুটি থাকে তবে এটি স্থিতিশীল মুক্তিতে যোগ না হওয়া পর্যন্ত আপনি এই ফিক্সটি চালাতে পারেন।

অবশেষে, আপনি "পরীক্ষার / ইউনিট" এবং "পরীক্ষা / বৈশিষ্ট্য" ফোল্ডার উভয়ই উদাহরণস্বরূপ মুছতে পারেন যাতে আমাদের পরীক্ষার ফলাফল প্রভাবিত না হয় এবং আমরা শুরু করতে পারি।

কোড লিখুন

  1. ডিফল্ট হিসাবে JWT ড্রাইভারটি ব্যবহার করতে আপনার প্রমাণীকরণের কনফিগারেশনটি সেট করে শুরু করুন:

তারপরে আপনার রুটগুলি / api.php ফাইলে নিম্নলিখিতটি যুক্ত করুন:

২. আমরা আমাদের ড্রাইভার সেট আপ করার পরে, একইভাবে আপনার ব্যবহারকারী মডেলটি সেট আপ করুন:

আমরা সবে জেডব্লিউটিএস সাবজেক্ট বাস্তবায়ন করেছি এবং প্রয়োজনীয় পদ্ধতিগুলি যুক্ত করেছি।

৩. পরবর্তীতে আমাদের নিয়ামকটিতে আমাদের প্রমাণীকরণের পদ্ধতিগুলি যুক্ত করতে হবে।

পিএইচপি কারিগর মেক চালান: নিয়ামক অথকন্ট্রোলার এবং নিম্নলিখিত পদ্ধতিগুলি যুক্ত করুন:

এই পদক্ষেপটি বেশ সহজ। আমরা কেবলমাত্র আমাদের নিয়ামককে প্রমাণীকরণ এবং নিবন্ধকরণ পদ্ধতি যুক্ত করি। প্রমাণীকরণ পদ্ধতির সাহায্যে আমরা ইনপুটটি যাচাই করি, লগ ইন করার চেষ্টা করি এবং টোকনটি সফল হলে এটি ফিরিয়ে দেয়। রেজিস্টার পদ্ধতিতে, আমরা ইনপুটটিকে বৈধতা দেব, ইনপুট দিয়ে একটি নতুন ব্যবহারকারী তৈরি করব এবং এর ভিত্তিতে ব্যবহারকারীর জন্য একটি টোকেন তৈরি করি।

4. ভাল অংশে। আমরা কী লিখেছি তা পরীক্ষা করুন। পিএইচপি আর্টিসান মেক দিয়ে পরীক্ষার ক্লাস তৈরি করুন: পরীক্ষার এথটেষ্ট। নতুন টেস্ট / ফিচার / এথটিস্টে নিম্নলিখিত পদ্ধতিগুলি যুক্ত করুন:

উপরের কোডের মন্তব্যে কোডটি বেশ ভালভাবে বর্ণনা করা হয়েছে। একটি বিষয় মনে রাখবেন আমরা হ'ল প্রতিটি পরীক্ষায় ব্যবহারকারীকে কীভাবে তৈরি এবং মুছতে পারি। পরীক্ষাগুলির পুরো বিষয়টি হ'ল এগুলি একে অপরের থেকে স্বতন্ত্র হওয়া উচিত এবং ডাটাবেসের স্থিতি আদর্শ।

এখন আপনি বিশ্বব্যাপী ইনস্টল করা থাকলে $ বিক্রেতা / বিন / phpunit বা $ phpunit চালান। যদি আপনি এটি করেন, আপনার উচিত সফল বিবৃতি। যদি তা না হয় তবে আপনি লগগুলি পর্যালোচনা করতে, সংশোধন করতে এবং পরীক্ষা করতে পারেন। এটি টিডিডি থেকে দুর্দান্ত চক্র।

5. আমাদের প্রমাণীকরণ কাজ করার পরে, আমরা CRUD এর জন্য উপাদান যুক্ত করি। এই টিউটোরিয়ালে আমরা খাবারের রেসিপিগুলি CRUD নিবন্ধ হিসাবে ব্যবহার করব। না কেন?

আমাদের পিএইচপি কারিগর মেক তৈরি করা শুরু করুন: মাইগ্রেশন ক্রিয়েট_রেসিপস_সামগ্রী স্থানান্তর এবং নিম্নলিখিতগুলি যুক্ত করুন:

তারপরে মাইগ্রেশন চালান। এখন পিএইচপি আর্টিসান মেক: মডেল রেসিপি সহ মডেল যুক্ত করুন এবং এটি আমাদের মডেলটিতে যুক্ত করুন।

তারপরে এই পদ্ধতিটি ব্যবহারকারীর মডেলটিতে যুক্ত করুন।

Now. এখন আমাদের রেসিপিগুলি পরিচালনা করার জন্য আমাদের এন্ডপয়েন্টগুলি দরকার। প্রথমে আমরা পিএইচপি কারিগর যে নিয়ামক তৈরি করি তা তৈরি করি: নিয়ামক রেসিপিকন্ট্রোলার তৈরি করে। এরপরে, রুটগুলি / api.php ফাইলটি সম্পাদনা করুন এবং শেষের বিন্দুটি যুক্ত করুন।

কন্ট্রোলারে তৈরি পদ্ধতিটি যুক্ত করুন

পিএইচপি আর্টিজান মেকের সাথে ফাংশন পরীক্ষা উত্পন্ন করুন: টেস্টের রেসিপি টেস্ট এবং লিখিত সামগ্রীটি নীচে সম্পাদনা করুন:

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

ঠিক আছে, এই মুহুর্তে আমরা কেবলমাত্র উত্তরের স্থিতিটি নিশ্চিত করতে চাই। চালান $ বিক্রেতা / বিন / phpunit।

যদি সবকিছু ঠিকঠাক হয় তবে আপনার একটি ত্রুটি বার্তা পাওয়া উচিত।

1 টি ত্রুটি ছিল:
1) টেস্টস \ বৈশিষ্ট্য \ রেসিপিটেষ্ট :: টেস্টক্রিয়েট প্রত্যাশিত স্থিতি কোড 200, তবে 500 পেয়েছে। আমি বলতে পারি না যে মিথ্যা সত্য।
/home/user/sites/tdd-journey/vendor/laravel/framework/src/Illuminate/Foundation/Testing/TestResponse.phpimar33 / home/user/sites/tdd- Journey/tests/Etete/RecipeTest.php:49
ব্যর্থতা! পরীক্ষা: 3, দাবি: 5, ত্রুটি: 1।

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

// রেসিপি ফাইল পাবলিক ফাংশন প্রকাশক () {ফিরুন $ এটি-> স্বনিযুক্ত (ব্যবহারকারী :: শ্রেণি, 'প্রকাশক_আইডি'); }
// ব্যবহারকারী ফাইল পাবলিক ফাংশন রেসিপি () {ফেরত $ এটি-> hasMany (রেসিপি :: শ্রেণি, 'প্রকাশক_আইডি'); }

তারপরে আবার পরীক্ষা চালান। যদি সবকিছু ঠিকঠাক হয় তবে আমরা সবুজ সবুজ পরীক্ষা নেব!

... 3/3 (100%)
...
ঠিক আছে (3 পরীক্ষা, 5 দাবি)

এখন আমাদের রেসিপিটি তৈরির পরীক্ষা করতে হবে। এর জন্য আমরা ব্যবহারকারীর ব্যবস্থাপত্রের সংখ্যা দাবি করতে পারি। আপনার টেস্টক্রিয়েট পদ্ধতিটি নীচে আপডেট করুন:

আমরা এখন এগিয়ে যেতে এবং আমাদের বাকি পদ্ধতিগুলি পূরণ করতে পারি। কিছু পরিবর্তন করার জন্য সময়। প্রথমত, আমাদের রুটগুলি / এপিআইপিএফপি

পরবর্তী আমরা নিয়ামকগুলিতে পদ্ধতিগুলি যুক্ত করি। আপনার রেসিপি কনট্রোলার ক্লাসটি এভাবে আপডেট করুন।

কোড এবং মন্তব্যগুলি ইতিমধ্যে যথেষ্ট পরিমাণে যুক্তিটি ব্যাখ্যা করে।

শেষ পর্যন্ত আমাদের পরীক্ষা / বৈশিষ্ট্য / রেসিপি পরীক্ষা

অতিরিক্ত পরীক্ষা ব্যতীত কেবলমাত্র অন্যান্য পার্থক্যটি ছিল একটি শ্রেণিবদ্ধ ব্যবহারকারী ফাইল। এইভাবে, প্রমাণীকরণ পদ্ধতিটি কেবল একটি টোকেন তৈরি করে না, পরবর্তী কার্যগুলির জন্য ব্যবহারকারী ফাইলও সেট করে।

এখন $ বিক্রেতা / বিন / phpunit চালান এবং সঠিকভাবে করা হলে আপনার সবুজ পরীক্ষা চালানো উচিত।

উপসংহার

আশা করি আপনি কীভাবে লারাভেলে টিডিডি কাজ করে সে সম্পর্কে অন্তর্দৃষ্টি অর্জন করেছেন। এটি অবশ্যই একটি বিস্তৃত ধারণা যা কোনও নির্দিষ্ট পদ্ধতির সাথে আবদ্ধ নয়।

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

এই ওয়থথ্রুটির জন্য সমস্ত কোড এখানে গিথুবে উপলভ্য। এটি সাথে চারপাশে খেলা নির্দ্বিধায়।

চিয়ার্স!