Pull to refresh

Comments 6

Тестирование состояния
Во многих случаях можно отдать предпочтение другим методам тестируемого объекта(как один из вариантов), и тогда детали реализации в тесте снова станут неизвестны.

Каким другим? Если верить рисунку, то вы предлагаете изменить поведение сервера, чтобы он на запрос стал отдавать некоторый статус записи в БД. Т. е. раньше клиент дёргает сервер, тот что-то пишет в БД и тест проверял запись в БД. Это понятный сценарий и только так и можно быть уверенным, что сервер сделал то, что от него ожидали. Вы же предлагаете изменить поведение сервера в угоду удобства тестирования? Или я вас неправильно понял?

Есть такой подход, когда мы проверяем состояние не с помощью деталей реализации, а с помощью уже имеющегося открытого API.

  • Вместо того, чтобы явно вызывать orm или sql запрос, чтобы проверить, что вы создали нужный объект, в тесте вам нужно дёрнуть метод get того же репозитория.

  • Этот подход при желании можно использовать даже при тестировании самого приложения. Сначала вы делаете test_client.save(path=..., ...), а на этапе проверки делаете test_client.get(path=..., ...)

Не совсем понял про "менять сервер в угоду тестов"

Если тест работал, а потом начал падать, значит тест работает. Кто-то влез в логику и сломал ее.

Я не совсем понимаю про что вы. Если результаты работы объекта не меняются, но тест падает, очень вероятно что ваш тест хрупкий, завязанный на детали реализации, и это ложное срабатывание так называемое.

Это не хрупкий, а просто кривой тест. Какие-то параметры входящие возможно криво сделаны для теста. Что чаще всего у нас и происходит, потому что в каждом тесте идёт генерация данных, а не хардкорный какие-то из файла.

Я говорю про ситуацию, когда результат не меняется, а объект работает и возвращает нужный результат, но тест падает.

Sign up to leave a comment.

Articles