এখানে আমি আপনাকে একটি কলব্যাক পদ্ধতির যথাযথ উদাহরণ দিচ্ছি। সুতরাং ধরুন আমাদের কাছে পদ্ধতি লগইনের মতো একটি পদ্ধতি রয়েছে ():
public void login() {
loginService = new LoginService();
loginService.login(loginProvider, new LoginListener() {
@Override
public void onLoginSuccess() {
loginService.getresult(true);
}
@Override
public void onLoginFaliure() {
loginService.getresult(false);
}
});
System.out.print("@@##### get called");
}
উদাহরণটি আরও স্পষ্ট করার জন্য আমি এখানে সমস্ত সহায়ক শ্রেণিকে রেখেছি: লগইনসোভারি ক্লাস
public class LoginService implements Login.getresult{
public void login(LoginProvider loginProvider,LoginListener callback){
String username = loginProvider.getUsername();
String pwd = loginProvider.getPassword();
if(username != null && pwd != null){
callback.onLoginSuccess();
}else{
callback.onLoginFaliure();
}
}
@Override
public void getresult(boolean value) {
System.out.print("login success"+value);
}}
এবং আমাদের কাছে শ্রোতা লগইনলাইজন রয়েছে:
interface LoginListener {
void onLoginSuccess();
void onLoginFaliure();
}
এখন আমি ক্লাস লগইনের পদ্ধতি লগইন () পরীক্ষা করতে চেয়েছিলাম
@Test
public void loginTest() throws Exception {
LoginService service = mock(LoginService.class);
LoginProvider provider = mock(LoginProvider.class);
whenNew(LoginProvider.class).withNoArguments().thenReturn(provider);
whenNew(LoginService.class).withNoArguments().thenReturn(service);
when(provider.getPassword()).thenReturn("pwd");
when(provider.getUsername()).thenReturn("username");
login.getLoginDetail("username","password");
verify(provider).setPassword("password");
verify(provider).setUsername("username");
verify(service).login(eq(provider),captor.capture());
LoginListener listener = captor.getValue();
listener.onLoginSuccess();
verify(service).getresult(true);
পরীক্ষার শ্রেণীর উপরে টীকা যুক্ত করতে ভুলবেন না forget
@RunWith(PowerMockRunner.class)
@PrepareForTest(Login.class)
doSomething(data)
মিউটেটস হয়innerData
, তবে সেই পরিবর্তনটি কি উপস্থিতassertEquals("Some inner data", actual.innerData)
থাকবে, বা মৃত্যুদন্ড কার্যকর হওয়ার আগে যেমনinnerData
ধরা পড়বে ?doSomething