আমার টেস্ট ক্লাসে আমার একটি ব্যক্তিগত পদ্ধতি রয়েছে যা একটি ব্যবহৃত ব্যবহৃত Barঅবজেক্ট তৈরি করে। Barকন্সট্রাকটর আহ্বান someMethod()আমার ব্যঙ্গ বস্তু পদ্ধতি:
private @Mock Foo mockedObject; // My mocked object
...
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
}
আমার পরীক্ষার কয়েকটি পদ্ধতিতে আমি যাচাই করতে চাই someMethodসেই নির্দিষ্ট পরীক্ষার দ্বারাও আমন্ত্রণ জানানো হয়েছিল। নিম্নলিখিত মত কিছু:
@Test
public void someTest() {
Bar bar = getBar();
// do some things
verify(mockedObject).someMethod(); // <--- will fail
}
এটি ব্যর্থ হয়েছে, কারণ উপহাস করা বস্তুটি someMethodদু'বার ডেকেছিল। আমি চাই না যে আমার পরীক্ষার পদ্ধতিগুলি আমার পদ্ধতির পার্শ্ব প্রতিক্রিয়াগুলি সম্পর্কে যত্নশীল getBar(), সুতরাং আমার মক অবজেক্টটির শেষে পুনরায় সেট করা কি যুক্তিযুক্ত হবে getBar()?
private Bar getBar() {
Bar result = new Bar(mockedObject); // this calls mockedObject.someMethod()
reset(mockedObject); // <-- is this OK?
}
আমি জিজ্ঞাসা করি, কারণ ডকুমেন্টেশনটি মক অবজেক্টগুলি পুনরায় সেট করার পরামর্শ দেয় সাধারণত খারাপ পরীক্ষার সূচক। তবে এটি আমার কাছে ঠিক আছে।
বিকল্প
বিকল্প পছন্দটি কল করছে বলে মনে হচ্ছে:
verify(mockedObject, times(2)).someMethod();
যা আমার মতে প্রতিটি পরীক্ষা getBar()কোনও লাভের জন্যই তার প্রত্যাশা সম্পর্কে জানতে বাধ্য করে ।