AIKraft/Skills/principle-test-behavior-not-implementation

principle-test-behavior-not-implementation

Применяйте при написании или изменении тестов: вызывайте код так, как это делают пользователи, и проверяйте результат. Если тест проходит, когда все импортированные функции возвращают undefined, перепишите или удалите его.

CUCursor official Разработка ★ 10.1k

Что делает навык

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

Когда применять

  • Аудит существующих тестов на предмет слабых утверждений, таких как toBeDefined или отсутствие expect.
  • Проверка тестов, использующих только моки (например, toHaveBeenCalled), без проверки переданных данных или состояния.
  • Выявление тестов, утверждающих само себя (self-referential), где ожидаемое значение вычисляется из результата теста.
  • Обнаружение жесткой привязки к константам (constant pin), когда тест просто повторяет значение переменной.
  • Исправление тестов, где проверяются фикстуры, созданные в beforeEach, а сам тестируемый код не выполняется.

Как работает

  1. Примените проверку: представьте, что все импортируемые функции возвращают undefined, и оцените, пройдет ли тест.
  2. Если тест проходит при таких условиях, определите одну из пяти проблемных форм: слабое утверждение, только моки, само-ссылка, константа или фикстура.
  3. Перепишите тест, вызвав тестируемую функцию с конкретным входным параметром и утверждая буквальный ожидаемый результат.
  4. Для случаев отсутствия результата (absence) утверждайте наличие результата при другом входе в том же тесте.
  5. Для констант тестируйте механизм их чтения с входными данными, а не саму константу.
  6. Для моков утверждайте полезную нагрузку или состояние после вызова, а не факт вызова.

Примеры запросов агенту

Проверь этот тест на соответствие принципу 'Test Behavior, Not Implementation' и укажи, является ли он само-ссылочным.
Переформилируй утверждение в этом тесте, чтобы оно проверяло поведение функции, а не вызов мока.
Удали тест, который просто проверяет, что константа LIMITS.maxTools равна 8, и предложи альтернативу.

Описание составлено по SKILL.md навыка, сверено 09.10.2026.

Как подключить

1Скачать навык
# возьмите папку навыка «cursor-principle-test-behavior-not-implementation» из репозитория: # https://github.com/cursor/plugins
2Положить папку с SKILL.md к навыкам ассистента
# положите папку навыка туда, где ассистент ищет skills: cp -r cursor-principle-test-behavior-not-implementation/ ~/.claude/skills/cursor-principle-test-behavior-not-implementation/

Навык — папка с файлом SKILL.md (описание + инструкции) и опциональными скриптами. Ассистент (Claude, Claude Code и совместимые) подхватывает его по описанию и следует шагам.