আমার টেস্ট ক্লাসে আমার একটি ব্যক্তিগত পদ্ধতি রয়েছে যা একটি ব্যবহৃত ব্যবহৃত 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()
কোনও লাভের জন্যই তার প্রত্যাশা সম্পর্কে জানতে বাধ্য করে ।