জাভা 8 যেহেতু আপনি যুক্তি-কম any
পদ্ধতিটি ব্যবহার করতে পারেন এবং টাইপ যুক্তিটি সংকলক দ্বারা অনুমান করা হবে:
verify(bar).doStuff(any());
ব্যাখ্যা
জাভা 8-এ নতুন জিনিসটি হ'ল একটি লক্ষ্যের ধরণের লক্ষ্যটি তার উপ-এক্সপ্রেশনগুলির টাইপ পরামিতিগুলি নির্ধারণ করতে ব্যবহৃত হবে। জাভা 8 এর পূর্বে কেবলমাত্র প্যারামিটার ইনফারেন্স (বেশিরভাগ সময়) টাইপ করার পদ্ধতিগুলিতে তর্ক।
এক্ষেত্রে প্যারামিটার ধরণের জন্য doStuff
টার্গেট প্রকার হবে any()
এবং প্রত্যাবর্তনের মানের ধরণটি any()
সেই যুক্তির ধরণের সাথে মেলে বেছে নেওয়া হবে।
এই প্রক্রিয়াটি জাভা 8 এ যুক্ত করা হয়েছিল মূলত ল্যাম্বডা এক্সপ্রেশনগুলি সংকলন করতে সক্ষম হতে, তবে এটি সাধারণত টাইপ ইনফারেন্সগুলি উন্নত করে।
আদিম ধরণের
দুর্ভাগ্যক্রমে: এটি আদিম ধরণের সাথে কাজ করে না:
public interface IBar {
void doPrimitiveStuff(int i);
}
verify(bar).doPrimitiveStuff(any()); // Compiles but throws NullPointerException
verify(bar).doPrimitiveStuff(anyInt()); // This is what you have to do instead
সমস্যাটি হ'ল সংকলকটির Integer
রিটার্ন মান হিসাবে অনুমান করা হবে any()
। Mockito এই (টাইপ ইরেজিওর কারণে) সচেতন হবেন না এবং রেফারেন্স ধরনের, যা ডিফল্ট মান null
। রানটাইম intValue
এটিতে যাওয়ার আগে পদ্ধতিটিতে কল করে রিটার্ন মানটি আনবক্স করার চেষ্টা করবে doStuff
এবং ব্যতিক্রম ছুঁড়ে যাবে।
any
পদ্ধতিটি কেবল কাজ করা উচিত। যে জিনিসগুলি কেবল কাজ করে আপনি তার উত্তর খুঁজে পান না!