Defne Sabancı
Defne Sabancı

Reputation: 11

How to fix UnnecessaryStubbingException error nothing I tried worked?

package com.services.report.service.controller;

import com.services.report.service.model.SmsInfo;
import com.services.report.service.repository.SmsInfoRepository;
import com.services.report.service.request.screen.SmsInfoQueryRequest;
import com.services.report.service.response.screen.SmsInfoQueryResponse;
import com.services.report.service.service.ReporterService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnitRunner;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class ScreenQueryControllerTest {

        @Mock
        private ReporterService reporterService;

        @Mock
        private SmsInfoRepository smsInfoRepository;

        @InjectMocks
        private ScreenQueryController screenQueryController = new ScreenQueryController();

        private SmsInfoQueryRequest smsInfoQueryRequest;
        private SmsInfoQueryResponse smsInfoQueryResponse;
        private SmsInfo smsInfo;
        private List<SmsInfo> list;


    @Test
    public void testGetSmsInfoByQuery_whenRequestBodyIsValidReturnResponseStatusSuccess() {
        getsmsInfoQueryRequest();
        list = new ArrayList<>();
        getSmsInfo();
        list.add(smsInfo);
        when(smsInfoRepository.query(smsInfoQueryRequest)).thenReturn(list);
        smsInfoQueryResponse = screenQueryController.getSmsInfoByQuery(smsInfoQueryRequest);
        assertEquals("SUCCESS", smsInfoQueryResponse.getStatus());

    }

    public SmsInfoQueryRequest getsmsInfoQueryRequest(){
        smsInfoQueryRequest = new SmsInfoQueryRequest();
        smsInfoQueryRequest.setPartnerId("99");
        smsInfoQueryRequest.setCompanyId("1");
        smsInfoQueryRequest.setStartDate(new Date());
        smsInfoQueryRequest.setEndDate(new Date());
        return smsInfoQueryRequest;

    }

    public SmsInfo getSmsInfo() {

        smsInfo = new SmsInfo();
        smsInfo.setId("1");
        smsInfo.setVersion(1L);
        smsInfo.setUpdateDate(new Date());
        smsInfo.setCreateDate(new Date());
        smsInfo.setStatus("completed");
        smsInfo.setPartnerId("999");
        smsInfo.setCompanyId("888");
        smsInfo.setUser("admin");
        smsInfo.setRequestName("Request-3");
        smsInfo.setStartDate(new Date());
        smsInfo.setEndDate(new Date());
        smsInfo.setMessage("testt");
        smsInfo.setAlfanumeric("alfanumeric");
        smsInfo.setBmspGroupId("1");
        smsInfo.setBmspJobIds(new ArrayList<>());
        smsInfo.setReceiverCount(1L);
        smsInfo.setSuccessCount(2L);
        smsInfo.setFailureCount(3L);
        smsInfo.setWaitingCount(4L);
        smsInfo.setLastUpdateEventTime(5L);
        smsInfo.setErrorReason(new ArrayList<>());
        smsInfo.setRequestType("Request-Type");
        smsInfo.setInfos(new ArrayList<>());
        smsInfo.setSource("Kaynak");
        smsInfo.setSmsType("Sms");
        return smsInfo;

    }

}

In this way, I have multiple tests and I don't get an error when I just run the stand-alone test method, but when I run the ScreenQueryControllerTest method, I get the following log. The situation is the same for a single test or multiple tests, how can I solve it, similar solutions here did not work for me, I am about to lose my mind.

Upvotes: 0

Views: 70

Answers (0)

Related Questions