Pull to refresh

Comments 19

UFO landed and left these words here

Интересно, как проверить, например, функцию, убирающую пробелы и меняющую цифры на точки во входной строке с помощью этого подхода?

UFO landed and left these words here
  1. Можно ли контролировать inputs и насколько гибко?

  2. Есть ли поддержка моков (например, чтоб замоканный вызов БД также все время возвращал разный ответ)?

UFO landed and left these words here

Моки при том что если возвращать одно и то же значение из замоканной БД (а именно так чаще всего и делают), то толку в разнообразии входящих данных?
Из того что стало понятно про property-based тесты, вся их мощь в генерации входных данных. Если полагаться на значения по умолчанию, то не факт, что нагенерятся все граничные условия. А если генерить их руками, то парочку "граничных условий обязательно пропустите".
Вообщем поэтому этот метод судя по всему и не прижился, т.к. это по сути то же самое, что все и делают, создавая кучу искусственных кейсов, но в красивой оббертке.

UFO landed and left these words here

Если б только тупые, многие еще и агрессивные, оттого и воевать лезут...

С одной стороны соглашусь, что инициализация моков действительно не проблема. Её можно вынести в отдельную функцию, для которой, возвращаемые моками значения, станут теми же параметрами, которые сможет нагенерировать фреймворк.

Что меня больше беспокоит в этом подходе, так это сложность самих тестов. Она приближается к сложности тестируемой функции, а может и превосходит ее. Какая польза от настолько сложного теста, который в пору покрывать тестами? Кто будет "сторожить сторожей"?

Я бы ещё рекомендовал юзать DI

И если юзаются внешние либы, то не стоит забывать, что в них тоже могут быть баги)

Ну пример со сменой мин кол-ва порций и не должен быть красным. Проверка на условие меньше 2, а не меньше или равно.

UFO landed and left these words here

А разве не в этом ли суть тестов, что после рефакторинга они все равно остаются зелеными, не зная ничего о том, какой именно был рефакторинг?

UFO landed and left these words here

Возможно, при следующем рефакторинге из примера выше стоит поработать над магическими числами? А то так можно вечно обновлять циферки то в коде, то в тестах.

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

"добавить обращение к заглушке вместо реального сервиса "

Если сервис в какой-то момент изменит внутреннюю логику или вывод, то вы об этом из этого теста не узнаете. Поправьте если я не прав.

В таком случае лучше использовать подготовленные данные, сгенерированные ранее сервисом или вам нужен еще один тест, который будет подтверждать, что сервис работает согласно ожиданиям, чтобы тест был валидным.

Для этого вам нужны интеграционные тесты.

Sign up to leave a comment.

Articles