মকিতো
জাভাদোক আপনাকে মকিতো.ওহেন (অবজেক্ট) ব্যবহার করতে পারবেন না এমন বিরল ইভেন্টগুলিতে কেন ব্যবহারের doReturn()
বদলে ব্যবহার when()
করুন ডেট রিটার্ন () ব্যবহার করবেন বলে মনে হচ্ছে tell
সাবধান থাকুন যে মকিতো.ওহেন (অবজেক্ট) সর্বদা স্টাবের জন্য সুপারিশ করা হয় কারণ এটি আর্গুমেন্ট টাইপ-নিরাপদ এবং আরও পঠনযোগ্য (বিশেষত পরপর কলগুলিতে স্ট্যাবিং করার সময়)।
যখন দ্য রিটার্ন () কাজে আসে তখন এই বিরল ঘটনাগুলি এখানে:
১. আসল বস্তুগুলির গুপ্তচরবৃত্তি করার সময় এবং কোনও গুপ্তচরকে বাস্তব পদ্ধতি কল করার সময় পার্শ্ব প্রতিক্রিয়া হয়
List list = new LinkedList(); List spy = spy(list);
// অসম্ভব: বাস্তব পদ্ধতিটিকে তাই স্পাই.জেট বলা হয় (0) সূচক ছুঁড়ে ফেলেছে অফব্যান্ডসেক্সশন (তালিকাটি এখনও খালি রয়েছে)
when(spy.get(0)).thenReturn("foo");
// খড়ের জন্য আপনাকে doReturn () ব্যবহার করতে হবে:
doReturn("foo").when(spy).get(0);
২. পূর্ববর্তী ব্যতিক্রম-স্টাবিংকে ওভাররাইড করা:
when(mock.foo()).thenThrow(new RuntimeException());
// অসম্ভব: ব্যতিক্রম-স্টাবড ফু () পদ্ধতিটিকে তাই রানটাইমএক্সেপশন নিক্ষেপ করা হয়। when(mock.foo()).thenReturn("bar");
// খড়ের জন্য আপনাকে doReturn () ব্যবহার করতে হবে:
doReturn("bar").when(mock).foo();
উপরের পরিস্থিতিতে মকিতোর মার্জিত সিনট্যাক্সের একটি ট্রেড অফ দেখায়। নোট করুন যে পরিস্থিতিতে যদিও খুব বিরল। গুপ্তচরবৃত্তি ছড়িয়ে ছিটিয়ে থাকা এবং ওভাররাইডিং ব্যতিক্রম-স্টাবিং খুব বিরল হওয়া উচিত। উল্লেখ করার দরকার নেই যে সাধারণভাবে ওভাররিডিং স্টুবিং হ'ল একটি সম্ভাব্য কোড গন্ধ যা খুব বেশি স্টাবিংকে নির্দেশ করে।
doReturn()
দরকারী যেখানে কার্যকর।