| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
В этом задании веб-приложение уже написано. Вам предстоит написать интеграционные тесты, которые будут проверять работу этого приложения. Интеграционное тестирование — это такой тип тестирования, при котором отдельные модули объединяются и тестируются вместе, как группа. Интеграционные тесты проверяют, как эти модули работают вместе.
В этом задании есть только одна реализация — правильная, и она должна пройти тестирование. Мы не будем автоматически тестировать ваши тесты, подставляя неправильные реализации приложения.
Для проверки работы приложения в тестах мы будем отправлять ему запросы и проверять ответы. Поэтому перед началом всех тестов нужно запустить приложение, а после окончания всех тестов остановить его.
Часть тестов для приложения уже написана. Уже проверяется работа исходной страницы приложения, вывод всех пользователей, вывод конкретного пользователя и вывод формы создания пользователя. Вам предстоит проверить корректность работы приложения при создании нового пользователя. Нужно будет протестировать два сценария:
Позитивный — что при отправке валидных данных пользователь создаётся и добавляется в базу данных
Негативный — что при отправке невалидных данных новый пользователь не создаётся
Создайте метод, который перед началом тестов запускает приложение. Чтобы указать, что метод должен выполниться перед всеми тестами в классе, используйте аннотацию @BeforeAll. В методе получите экземпляр приложения, использовав статический метод getApp() из класса App и запишите полученный экземпляр в свойство app класса.
app = App.getApp();Запустите приложение при помощи метода start() на случайном порту. Получите порт, на котором запустилось приложение, затем сформируйте базовый URL и запишите его в свойство baseUrl класса.
baseUrl = "http://localhost:" + port;Именно по этому URL мы будем обращаться к приложению в тестах
Создайте метод, который после завершения всех тестов остановит приложение. Чтобы указать, что метод должен выполниться после всех тестов в классе, используйте аннотацию @AfterAll
Изучите уже написанные тесты. Обратите внимание на комментарии к коду.
Напишите тест, который проверяет, что при отправке валидных данных приходит ответ с кодом 302, а новый пользователь создаётся и добавляется в базу данных. Данные пользователя считаются валидными, если:
Чтобы проверить, что пользователь с такими данными есть в базе, получите его из базы и проверьте, что его данные соответствуют тем, что были отправлены в запросе.
Напишите тест, который проверяет, что при отправке не валидных данных приходит ответ с кодом 422 и новый пользователь не добавляется в базу данных. Проверьте также, что тело ответа содержит данные пользователя и сообщения об ошибочно заполненных полях. Текст сообщений вы можете посмотреть в классе контроллера UserController.
Если считаете, что необходимо дополнительно протестировать ещё какие-то случаи, можете написать тесты и на них.
Метод field() библиотеки Unirest служит для установки значения поля в запросе
Метод getBody() возвращает тело ответа в виде строки
Метод getStatus() возвращает код ответа
Чтобы проверить, что значение точно соответствует ожидаемому, используйте метод isEqualTo()
assertThat(actual).isEqualTo(expected);Чтобы проверить равно ли значение null, используйте методы isNull() и isNotNull()
assertThat(value).isNotNull();
assertThat(value).isNull();| Back | FazBrowse Home | New Git URL |