সংক্ষিপ্ত উত্তরটি হ'ল আপনার উদাহরণে, ফলাফলটি mock.method()একটি টাইপ-উপযুক্ত খালি মান হবে; মকিতো প্রক্সিং, পদ্ধতি ইন্টারসেপশন এবং এর একটি ভাগ করা দৃষ্টান্তের মাধ্যমে ইন্ডিয়ারেশন ব্যবহার করেMockingProgress ক্লাসের নির্ধারণ করার জন্য যে বা রিপ্লে করার জন্য বিদ্যমান স্টাব্বড আচরণের রিপ্লেয়ের পরিবর্তে মানগুলি ফেরতের মানের মাধ্যমে স্ট্যাবিংয়ের তথ্য পাস করার জন্য নয়? একটি উপহাস পদ্ধতি।
মকিটো কোডটি দেখে কয়েক মিনিটের মধ্যে একটি মিনি-অ্যানালাইসিস নীচে রয়েছে। দ্রষ্টব্য, এটি একটি মোটামুটি বর্ণনা - এখানে খেলতে প্রচুর বিবরণ রয়েছে। আমি আপনাকে গিথুবের উত্সটি পরীক্ষা করে দেখার পরামর্শ দিই নিজেই ।
প্রথমত, আপনি যখন ক্লাসের mockপদ্ধতিটি ব্যবহার করে কোনও শ্রেণিকে উপহাস করেন Mockito, মূলত যা ঘটে তা ঘটে:
Mockito.mockorg.mockito.internal.MockitoCoreএকটি পরামিতি হিসাবে ডিফল্ট মক সেটিংস পাস করে .mock এ প্রতিনিধি ।
MockitoCore.mockorg.mockito.internal.util.MockUtil.createMock এর প্রতিনিধি
MockUtilবর্গ ব্যবহার ClassPathLoaderএর একটি দৃষ্টান্ত পেতে বর্গ MockMakerউপহাস তৈরি করতে ব্যবহার করতে। ডিফল্টরূপে, CgLibMockMaker শ্রেণি ব্যবহৃত হয়।
CgLibMockMakerজেএমক থেকে ধার নেওয়া একটি শ্রেণি ব্যবহার ClassImposterizerকরে যা মক তৈরি করতে পরিচালনা করে। 'Mockito জাদু' ব্যবহার চাবি টুকরা হয় MethodInterceptormockito: উপহাস তৈরি করতে ব্যবহার করা MethodInterceptorFilter, এবং একটি দৃষ্টান্ত সহ MockHandler দৃষ্টান্ত, একটা চেন MockHandlerImpl । পদ্ধতি ইন্টারসেপ্টার মকহ্যান্ডলারআইম্পল উদাহরণটিতে অনুরোধগুলি প্রেরণ করে, যা মোকদ্দমাতে কোন পদ্ধতি প্রয়োগ করার সময় প্রয়োগ করা উচিত এমন ব্যবসায়িক যুক্তি প্রয়োগ করে (যেমন, উত্তরটি ইতিমধ্যে রেকর্ড করা হয়েছে কিনা তা সন্ধান করে, এই আহ্বানটি একটি নতুন স্টাবের প্রতিনিধিত্ব করে কিনা ইত্যাদি নির্ধারণ করে) etc. ডিফল্ট স্ট্যাটাসটি হ'ল যদি কোনও স্টাবটি চালিত হওয়ার পদ্ধতিটির জন্য ইতিমধ্যে নিবন্ধভুক্ত না হয় তবে একটি টাইপ-উপযুক্ত খালি মান ফিরে আসে is
এখন, আপনার উদাহরণে কোডটি দেখুন:
when(mock.method()).thenReturn(someValue)
এই কোডটি এখানে কার্যকর করা হবে এমন আদেশটি এখানে:
mock.method()
when(<result of step 1>)
<result of step 2>.thenReturn
কী চলছে তা বোঝার মূল চাবিকাঠিটি হল যখন মোক নিয়ে পদ্ধতিটি আহ্বান করা হয় তখন কী ঘটে: পদ্ধতি ইন্টারসেপ্টারটি পদ্ধতিটি প্রার্থনার বিষয়ে তথ্য প্রেরণ করা হয় এবং এর MockHandlerউদাহরণগুলির শৃঙ্খলে প্রতিনিধি প্রেরণ করা হয় যা শেষ পর্যন্ত প্রেরণ করে MockHandlerImpl#handle। সময়কালে MockHandlerImpl#handle, মক হ্যান্ডলার একটি উদাহরণ তৈরি করে OngoingStubbingImplএবং এটিকে ভাগ করে দেওয়া হয়MockingProgress দৃষ্টান্তে ।
whenঅনুরোধের পরে যখন পদ্ধতিটি আহ্বান করা হয় method(), তখন এটি প্রতিনিধিত্ব করে MockitoCore.when, যা stub()একই বর্গের পদ্ধতিটিকে ডাকে । এই পদ্ধতিটি বিদ্রূপের অনুরোধটি MockingProgressযে ভাগ করা হয়েছে তাতে ভাগ করে নেওয়া দৃষ্টান্ত থেকে চলমান স্টাবকে আনপ্যাক করে method()এবং এটি ফেরত দেয়। তারপরে thenReturnমেথডকে ডাক দেওয়া হয় OngoingStubbing।