argThat
প্লাস ল্যাম্বদা
এভাবেই আপনি নিজের যুক্তি যাচাইকরণ ব্যর্থ করতে পারেন:
verify(mock).mymethod(argThat(
(x)->false
));
কোথায়
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Mockito.verify;
argThat
প্লাস জোর
উপরের পরীক্ষাটি "বলবে" Expected: lambda$... Was: YourClass.toSting...
। ল্যাম্বডায় দৃser় সংস্থান ব্যবহার করতে পারলে আপনি ব্যর্থতার আরও নির্দিষ্ট কারণ পেতে পারেন:
verify(mock).mymethod(argThat( x -> {
assertThat(x).isNotNull();
assertThat(x.description).contains("KEY");
return true;
}));
বাট: এই 1 টি মেথড কল দিয়ে কাজ করে। যদি যাচাই পদ্ধতিটি 2+ বার বলা হয়, মকিতো প্রতিটি যাচাইকারীকে কলযুক্ত সমস্ত সংযুক্তি পাস করে। সুতরাং মকিতো আশা করছে যে আপনার যাচাইকারীটি true
আর্গুমেন্ট সেটগুলির মধ্যে একটির জন্য নিঃশব্দে ফিরে আসে , এবং false
অন্যান্য বৈধ কলগুলির জন্য (কোনও ব্যতিক্রম দৃsert় নেই)। সেই প্রত্যাশাটি 1 পদ্ধতি কলের জন্য কোনও সমস্যা নয় - এটি ঠিক 1 বার ফিরে আসা উচিত।
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.Mockito.verify;
এখন পরীক্ষা বলে: Expected: Obj.description to contain 'KEY'. Was: 'Actual description'
। দ্রষ্টব্য: আমি assertJ
দৃser়পদগুলি ব্যবহার করেছি , তবে কোনটি দৃ as় কাঠামো ব্যবহার করা উচিত তা আপনার বিষয় to
argThat
একাধিক যুক্তি সহ।
আপনি ব্যবহার করেন তাহলে argThat
, সব আর্গুমেন্ট মিল সহ প্রদান করা আবশ্যক। উদাহরণ:
verify(mock).mymethod(eq("VALUE_1"), argThat((x)->false));
// above is correct as eq() is also an argument matcher.
verify(mock).mymethod("VALUE_1", argThat((x)->false));
// above is incorrect; an exceptoin will be thrown, as the fist arg. is given without an argument matcher.
কোথায়:
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.verify;
eq
মিলকারীর
যুক্তিটি সমান কিনা তা যাচাই করার সহজ উপায়:
verify(mock).mymethod(eq(expectedValue));
// NOTE: ^ where the parentheses must be closed.
প্রত্যক্ষ যুক্তি
রেফ দ্বারা তুলনা যদি গ্রহণযোগ্য হয়, তবে সাথে যান:
verify(mock).mymethod(expectedArg);
// NOTE: ^ where the parentheses must be closed.
মূল প্রশ্ন ব্যর্থতার মূল কারণ paranthes এর ভুল জায়গায় ছিল: verify(mock.mymethod...
। এটা ভুল ছিল। ডান হবে:verify(mock).*