jeudi 6 août 2020

How to unit test Handler

public void loadMemberPhotoList() {

        final List<MemberAndGuardianPhotoAndSignatureWrapper> photoList = getPhotoListToUpload();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                someMethod();
                someMethod1();
            }
        }, 500);
}

I have a handler , and i have to make sure some method 1 and some method 2 are being called in unit test.

    @Test
    public void loadMemberPhotoList(){
        //given
        presenter = spy(new PhotoSignaturePresenter(activity,view));
        List<MemberAndGuardianPhotoAndSignatureWrapper> photoUpload = new ArrayList<>();
        List<GuardianPhotoTable> gpt = new ArrayList<>();


        gpt.add(new GuardianPhotoTable(Long.valueOf("1"), "22", "ram prasad", "asdfghjklkj", "remarks", Long.valueOf("2"), "new", Long.valueOf("23")));
        gpt.add(new GuardianPhotoTable(Long.valueOf("1"), "22", "ram prasad", "asdfghjklkj", "remarks", Long.valueOf("2"), "new", Long.valueOf("23")));
        gpt.add(new GuardianPhotoTable(Long.valueOf("1"), "22", "ram prasad", "asdfghjklkj", "remarks", Long.valueOf("2"), "new", Long.valueOf("23")));
        
        photoUpload.add(new MemberAndGuardianPhotoAndSignatureWrapper("1","21","active","2","2","umesh","asdfghjklopw","lkjhgfdsaer","wadsdasd","asdasdwad","dsfewdsadas","karishma",gpt));
        photoUpload.add(new MemberAndGuardianPhotoAndSignatureWrapper("1","21","active","2","2","umesh","asdfghjklopw","lkjhgfdsaer","wadsdasd","asdasdwad","dsfewdsadas","karishma",gpt));
        photoUpload.add(new MemberAndGuardianPhotoAndSignatureWrapper("1","21","active","2","2","umesh","asdfghjklopw","lkjhgfdsaer","wadsdasd","asdasdwad","dsfewdsadas","karishma",gpt));
       
        doReturn(photoUpload).when(presenter).getPhotoListToUpload();
        //when
        presenter.loadMemberPhotoList();
        //then
        verify(view).someMethod();
        verify(view).someMethod1();
    }

i tried this but test stopps as it reaches new Handler().postDelayed()

does anyone has any idea how to do it?

Aucun commentaire:

Enregistrer un commentaire