Я думаю, что если я добавлю проверку на модель, это приведет к ее поведению.
Добавление проверки к вашей модели дает этой модели некоторое поведениено не обеспечивает этого.Поведение требуется только в том случае, если от него зависит какой-то другой фрагмент кода, и он сломается, если он изменится.Пока поведение не будет использовано, удаление не будет влиять на ваш проект, и поэтому ничто не заставляет вас присутствовать.
Поскольку я уже знаю, что скажу это, в чем смысл создания первого теста для него?В конце концов, он всегда будет проходить, если я не изменю валидацию (в этом случае я, конечно, это заметю).
Написание тестов, особенно сначала написание тестов, дает вам немедленное использование вашихкод.Что-то, что требует присутствия поведения и которое должно быстро, надежно и автоматически провалиться, если это поведение изменится.Тесты применяют открытый интерфейс к вашему коду, потому что в противном случае вы измените этот интерфейс, и вы не заметите.
При условии, что я единственный разработчик, не так линемного слишком много работы без реальной причины?
Вы можете быть единственным человеком, работающим над проектом, но вы не можете вспомнить все.Напишите тесты, чтобы на следующей неделе у вас было что-то, чтобы убедиться, что вы не нарушаете сделанных сегодня предположений.
Более того, допустим, что у меня есть тест, который указывает, что user.name должно быть либо«Том» или «Джон».
Этого недостаточно, чтобы быть хорошим тестом.Вы можете проверить, что «пользователь должен быть действительным, когда user.name имеет значение« Tom »» или «user.name должен быть включен в [« Tom »,« John »]» или даже «пользователь должен быть недействительным, если user.nameэто «Алекс».Вы не можете надеяться написать тест для всех возможных входов в ваше приложение, поэтому вам нужно сделать разумный выбор в отношении того, что тестировать.Проверьте, что действительные входные данные дают действительные результаты.Проверьте, что неверные данные не пройдены ожидаемым образом.Не беспокойтесь о проверке всех возможных недопустимых вводов или недопустимого использования вашего кода.
Если для «user.name» недопустимо быть «Alex», возможно, вам следует проверить, что код вызывает вашего пользователя.объект не пытается установить свое имя в "Алекс".Если «Alex» является допустимым именем, но ваш код все равно не удался, вам следует написать более надежный код, более качественные тесты и тест для имени «Alex», чтобы убедиться, что вы исправили свой класс User для обработки этого имени.
Пожалуй, самое главное, если вы сначала пишете тесты, то они могут заставить вас разработать лучший интерфейс для вашего класса User.Тот, который более четко выражает поведение атрибута «name» и не рекомендует устанавливать недопустимые имена.