Рубрики
Без рубрики

TDD и тесты с насмешками

Разработка, основанная на тестировании TDD, – это способ разработки кода, в котором создается тест… С тегами tdd, mockito, java, для начинающих.

Разработка на основе тестирования – это способ разработки кода, при котором тест создается до фактического кода. Это сделано для того, чтобы убедиться, что разработка работает. Тест должен быть первым, что нужно создать, чтобы вокруг него можно было создать код.

Хороший способ провести эти тесты – использовать Mockito.

Mockito – это насмешливый фреймворк, который часто используется в модульных тестах. Издевательство над объектом имитирует его поведение. Когда создается эта симуляция, она позволяет реализовать тест без необходимости вызывать сложный объект, мы вызываем только издевательский объект.

Примеры

Необходимо инициировать насмешки перед тестами.

@Before
public void setup(){
    service = new RentService();
    RentDAO dao = Mockito.mock(RentDAO.class);
    service.setRentDao(dao);
    spcService = Mockito.mock(SPCService.class);
    service.setSpcService(spcService);
}

Я имитирую интерфейсы RentDAO и службы SPC с помощью Mockito.

Аренда DAO: публичное сохранение пустоты (Аренда аренды); Служба SPC: публичное логическое отрицательное значение (Пользователь пользователь);

С помощью этого мы можем сделать наш тест, называющий насмешку.

@Test
public void rentTest() throws Exception {
    //given
    User user = UserBuilder.aUser().now();
    List movies = Arrays.asList(MovieBuilder.aMovie().withValue(5.0).now());

    //when
    Rent rent = service.rentMovie(user, movies);

    //then
    error.checkThat(rent.getValue(), is(equalTo(5.0)));
    error.checkThat(DataUtils.isSameDate(rent.getRentDate(), new Date()), is(true));
    error.checkThat(DataUtils.isSameDate(rent.getReturnDate(), DataUtils.obtainDataInDifferenceInDays(1)), is(true));
}

В этом тесте, пользователь и фильм, в котором инициировался и был высмеян сервис аренды.

Вывод

Таким образом, можно проверить, работает ли услуга аренды, фактически не используя ее. Это полезно, чтобы избежать, например, ненужных вызовов базы данных, просто издевайтесь над объектом, который выполняет этот вызов.

В случае, если вам интересно, вот репозиторий на GitHub с большим количеством этих издевательских тестов: В случае, если вам интересно, вот репозиторий на GitHub с большим количеством этих издевательских тестов:

Оригинал: “https://dev.to/pedro_arruzzo/tdd-and-tests-with-mocks-52k8”