আপনি যা করতে চান তা 1 এবং 2 এর সমস্ত অংশের সংমিশ্রণ।
শ্রেণীর সমস্ত স্থিতিশীল পদ্ধতির জন্য স্থির বিদ্রূপ সক্ষম করতে আপনাকে পাওয়ারমকিটো.মকস্ট্যাটিক ব্যবহার করতে হবে। এর অর্থ যখন ততক্ষণে রিটার্ন সিনট্যাক্স ব্যবহার করে এগুলিকে আটকানো সম্ভব করে তোলে।
আপনি মকস্ট্যাটিকের 2-যুক্তিযুক্ত ওভারলোডটি মকিতো / পাওয়ারমককে কী করা উচিত তার জন্য একটি ডিফল্ট কৌশল সরবরাহ করে যখন আপনি কোনও পদ্ধতি কল করেন যখন আপনি মক উদাহরণটিতে স্পষ্টভাবে স্ট্যাবড করেন নি।
জাভাডোক থেকে :
ইন্টারঅ্যাকশনগুলির উত্তরগুলির জন্য একটি নির্দিষ্ট কৌশল সহ শ্রেণি মক তৈরি করে। এটি বেশ উন্নত বৈশিষ্ট্য এবং সাধারণত আপনার শালীন পরীক্ষা লিখতে হবে না। তবে লিগ্যাসি সিস্টেমগুলির সাথে কাজ করার সময় এটি সহায়ক হতে পারে। এটি ডিফল্ট উত্তর তাই আপনি যখন মেথড কলটি স্টাব করবেন না তখনই এটি ব্যবহার করা হবে।
ডিফল্ট ডিফল্ট stubbing কৌশল অবশ্য বিনিময়ে নাল, 0 বা বস্তু, সংখ্যা জন্য মিথ্যা হয় এবং মূল্যবান পদ্ধতি বুলিয়ান। ২-আরগের ওভারলোডটি ব্যবহার করে আপনি বলছেন "না, না, না, ডিফল্টভাবে এই উত্তর সাবক্লাসের উত্তর পদ্ধতিটি ডিফল্ট মান পেতে ব্যবহার করুন a এটি একটি দীর্ঘ প্রত্যাবর্তন করে, যদি আপনার কাছে স্থিতিশীল পদ্ধতি থাকে যা কিছু অসম্পূর্ণভাবে ফিরে আসে if দীর্ঘ, একটি সমস্যা আছে।
পরিবর্তে, স্ট্যাটিক পদ্ধতিগুলির স্টাবিং সক্ষম করতে মকস্ট্যাটিকের 1-আরগ সংস্করণটি ব্যবহার করুন, তারপরে কোনও নির্দিষ্ট পদ্ধতির জন্য কী করবেন তা নির্দিষ্ট করার জন্য যখন-ততপর পুনরায় ব্যবহার করুন। উদাহরণ স্বরূপ:
import static org.mockito.Mockito.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
class ClassWithStatics {
public static String getString() {
return "String";
}
public static int getInt() {
return 1;
}
}
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassWithStatics.class)
public class StubJustOneStatic {
@Test
public void test() {
PowerMockito.mockStatic(ClassWithStatics.class);
when(ClassWithStatics.getString()).thenReturn("Hello!");
System.out.println("String: " + ClassWithStatics.getString());
System.out.println("Int: " + ClassWithStatics.getInt());
}
}
স্ট্রিং-ভ্যালু স্ট্যাটিক পদ্ধতিটি "হ্যালো!" ফেরত দিতে স্ট্যাবড হয়, যখন ইনট-ভ্যালু স্ট্যাটিক পদ্ধতি ডিফল্ট স্ট্যাবিং ব্যবহার করে 0 ফিরে আসে।