Mockito: "дано ... будет", возвращая ноль вместо ответа - PullRequest
1 голос
/ 17 мая 2019

Я сейчас реструктурирую свои юнит-тесты.Структура теперь выглядит следующим образом:

Класс теста:

@RunWith(MockitoJUnitRunner.class)
public class ServiceTest{

    @InjectMocks
    private Service serviceMock;

    private TestData testDataInstance = new TestData();

    @Before
    public void setUp(){
        testDataInstance = new TestData();
        testDataInstance.mockRepository();
    }

    @Test
    public void testSth(){
        ...
    }
}

Класс TestData:

public final class TestData{
    // this is of course an implemented repo
    @Mock
    public JpaRepository repository;

    public final TestDataObj testDataObj = new TestDataObj();

    public void mockRepositories(){
        MockitoAnnotations.initMocks(this);
        this.testDataObj.mockJpaRepository(jpaRepository);
    }
}

Класс TestDataObj:

public class TestDataObj{
    public List<DataClass> testData = new LinkedList<DataClass>(...);

    public void mockJpaRepository(JpaRepository repo){
        given(repo.foo(Mockito.any(bar.class))).will(new Answer<List<DataClass>>(){
            public List<DataClass> answer(InvocationOnMock invocation){
                ...
            }
        }
    }
}

Если я выполняю метод testSth (), макет JpaRepository присутствует, но метод foo возвращает ноль, даже если он должен хотя бы вернуть пустой список.

Идея, лежащая в основе вложения макета хранилищатакое возможность многократного использования.

Вопросы: 1. Создан ли макет сервиса до или после метода setUp?2. Можно ли даже назвать данный ... будет внутри вложенного объекта, как я?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...