Домашнее задание к занятию «3.1. Исключения»

Задача №1.PostNotFoundException Давайте разберёмся, как внедрить в сервис с постами возможность комментирования.

Нужно добавить метод createComment в WallService:

class WallService { private var posts = emptyArray() private var comments = emptyArray()

fun createComment(postId: Int, comment: Comment): Comment {
    TODO()
}

} Функция сначала должна проверить, существует ли в массиве posts пост с ID равным postId. Если существует, то добавить комментарий в массив comments и вернуть только что добавленный комментарий.

Если не существует, выкинуть исключение PostNotFoundException.

Спроектировать класс для комментариев вам нужно самостоятельно на базе описания типа Comment. Есть сохранённая копия.

Итог: у вас должен быть репозиторий на GitHub, в котором расположен ваш Gradle-проект.

Задача №2. JUnit Напишите два теста на созданную функцию:

Функция отрабатывает правильно, если добавляется комментарий к правильному посту. Функция выкидывает исключение, если была попытка добавить комментарий к несуществующему посту. Вот как протестировать, что какой-то код выкидывает исключение:

@Test(expected = PostNotFoundException::class) fun shouldThrow() { // здесь код с вызовом функции, которая должна выкинуть PostNotFoundException } При этом assert в конце теста не нужен. Достаточно сделать вызов функции, которая должна выкинуть исключение.

Важно: после ваших обновлений WallService должна оставаться функциональной, т. е. автотесты должны проходить.