উত্তর:
একটি টাইপ-নিরাপদ উপায় রয়েছে: ArgumentMatchers.any()
প্রকারের সাথে এটি ব্যবহার করুন এবং যোগ্য করুন:
ArgumentMatchers.<AsyncCallback<ResponseX>>any()
(Matchers.<AsyncCallback<ResponseX>>any()
Matchers
আসলে অবচয়, কিন্তু ArgumentMatchers
কাজ করেছে।
জাভা 8 ব্যবহার করে, আপনি any()
বর্ধিত ধরণের অনুক্রমের কারণে আর্গুমেন্ট বা টাইপ পরামিতি ছাড়াই (স্ট্যাটিক আমদানি ধরে রেখে) ব্যবহার করতে পারেন । সংকলকটি এখন আপনার টার্গেট টাইপ (পদ্ধতি আর্গুমেন্টের ধরণ) থেকে জানে যে আপনি আসলে Matchers.<AsyncCallback<ResponseX>>any()
যা জাভা 8 এর পূর্ববর্তী সমাধান।
any()
মেলে না AsyncCallback<AnyOtherType>
?
AsyncCallback<AnyOtherType>
এমনকি কম্পাইল করা উচিত নয় যদি যুক্তি টাইপ 'AsyncCallback <ResponseX>' হয়।
when(x.y(any())).thenAnswer(...)
উদাহরণস্বরূপ, যেখানে y
হয় public <T> T y(AsyncCallback<T> arg)
। সম্ভবত উত্তরের প্রকারটি পরীক্ষা করা আরও ভাল হবে, যদি এটির প্রয়োজন হয় তবে?
isA()
। যদি বস্তুটি Class
ধরণের সাথে সম্পর্কিত কোনও বস্তু ধারণ করে এবং ইন্টারফেসটি এটি প্রকাশ করে তবে আমার ধারণা আপনি এটি একটি কাস্টম ম্যাচারে পরীক্ষা করতে পারেন। বা উদাহরণস্বরূপ কোনও ক্ষেত্রে Collection
আপনি উপাদানগুলির প্রকারটি পরীক্ষা করতে পারেন।
Matchers
ArgumentMatchers
জেনেরিকদের জন্য আমাকে নিম্নলিখিত মেক্যামিজম গ্রহণ করতে হয়েছিল:
import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);
আশা করি এটি কাউকে সাহায্য করবে।
উত্তর হিসাবে পিয়েরেফেরিয়ার মন্তব্য পোস্ট করা যা মন্তব্যগুলির পরিবর্তে কোনও উত্তরে উপস্থিত থাকলে কার্যকর হতে পারে।
মকিতোর নতুন সংস্করণ সহ: (Matchers.<AsyncCallback<ResponseX>>any()
আপনি যদি এটি চান তবে দমন সতর্কতা যুক্ত করে কেবল এটি নিক্ষেপ করতে পারেন:
@SuppressWarnings("unchecked")
AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class)
জাভা যদি 'জেনেরিক' জেনেরিকদের অনুমতি দেয় তবে তাদের মতো এই পদ্ধতি থাকতে পারে যা আপনি সন্ধান করছেন
private static <T, E> T<E> mock(Class<T<E>> clazz)
You cannot use argument matchers outside of verification or stubbing.
@SuppressWarnings
: প্রাক-জাভা 8, আপনি যদি এটি একটি পৃথক ভেরিয়েবলের জন্য বরাদ্দ করতে যাচ্ছিলেন তবে আপনি any()
কেবলইআইএনইয়ের উত্তর হিসাবে ব্যবহার করতে পারেন । এখন জাভা 8 এর সাথে any()
আলাদা অ্যাসাইনমেন্টের প্রয়োজন ছাড়াই ইনলাইন ব্যবহার করা যেতে পারে।
স্প্রিং ব্যবহার করে আমারও একই সমস্যা ছিল Example
:
Mockito.when(repo.findAll(Mockito.<Example<SrvReqToSupplierComment>>any()))
.thenReturn(Lists.emptyList());
এখানে, আপনাকে যোগ্যতা ব্যবহার করতে হবে, খ / সি সন্ধানের সমস্ত পদ্ধতি একাধিক ধরণের, পছন্দ মতো Sort
এবং নিতে পারে Iterable
। আপনি Mockito.any(Example.class)
ধরণের সুরক্ষা সতর্কতা সহ অবশ্যই ব্যবহার করতে পারেন ।