и пока ничего так и не нашёл
Не до конца понял. У тебя всё настраивается через env переменные? Нельзя просто иметь .env файл для тестов7
я не спец конечно. я бы думал как враппер к тесту написать который бы у меня все это делал
Нет, не через .evn файл, всё сложнее. Кроме того, при запуске сервера идёт инициализация необходимых коллекций в монге, если их нет (БД новая, например).
речь о e2e тестах?
Возможно, не могу сказать. Мне, грубо говоря, нужно протестить, что: 1. пользователь с корректными данными залогинился и получил jwt-токен; 1а. с некорректными данными пользователь не смог залогиниться 2. проверить, что авторизованный пользователь отправляет запрос с полученным jwt, и получает в ответ код 200. 2а. пользователь без jwt или с невалидным jwt получает 401. Ну и так далее. Но мне либо придётся в тестах дублировать полностью логику сервера и мокать всё подряд, либо надо найти способ тестировать активный сервер.
Если у вас express это можно сделать на supertest
Да, используется express. Попробую посмотреть про supertest
Он прям шлёт запросы на сервак
он как раз и делает e2e тестирвание по сути
Круть не знал)
Но далее правильно сказали про дампы базы. Возможно ещё их запускать надо
До релиза дамп БД не роляет, по сути. Сервер на старте сам создаёт и заполняет необходимые всякие сервисные коллекции, если там нет записей.
Тебе надо сделать так, чтобы результат работы предыдущего теста не влиял на следующий. А ещё нужно сделать так, чтобы тестирование можно было запускать параллельно. А ещё, чтобы вся подготовка не щла 100 лет
Но ведь по факту фейл первого теста (когда пользователь должен получить jwt), в принципе должен обрывать все тесты, потому что остальные реквесты требуют авторизации
Не. След тестам не нужен jwt. Предыдущего.
Ты сам задаёшь jwt в каждый тест по идее так. Могу ошибаться
Нет, это не так работает. У тебя тест не должен зависеть от другого теста. Где ты тестируешь с рабочим JWT, ты имеешь его фиксированный. Если хочешь проверить, что можно авторизоваться и потом проверить токен - делаешь это одним тестом
Я представлял это как цепочку последовательных тестов. Разве не так?
Почему нет, как вы это обойдете в postman, например?
при чём тут постман?
Я бы сделал юнит тесты на логику внутри предметного слоя, который за авторизацию отвечает.В большинстве случаев это быстрее и выгоднее, нежели e2e писать.
у юнит тестов и е2е разные цели.
Обсуждают сегодня