CU
principle-test-behavior-not-implementation
Применяйте при написании или изменении тестов: вызывайте код так, как это делают пользователи, и проверяйте результат. Если тест проходит, когда все импортированные функции возвращают undefined, перепишите или удалите его.
Что делает навык
Навык обеспечивает проверку тестов на способность фиксировать поведение кода, а не его внутреннюю реализацию или константы. Он помогает отбраковывать тесты, которые не могут выявить дефекты, и переписывать их для проверки реальных результатов работы функций.
Когда применять
- Аудит существующих тестов на предмет слабых утверждений, таких как toBeDefined или отсутствие expect.
- Проверка тестов, использующих только моки (например, toHaveBeenCalled), без проверки переданных данных или состояния.
- Выявление тестов, утверждающих само себя (self-referential), где ожидаемое значение вычисляется из результата теста.
- Обнаружение жесткой привязки к константам (constant pin), когда тест просто повторяет значение переменной.
- Исправление тестов, где проверяются фикстуры, созданные в beforeEach, а сам тестируемый код не выполняется.
Как работает
- Примените проверку: представьте, что все импортируемые функции возвращают undefined, и оцените, пройдет ли тест.
- Если тест проходит при таких условиях, определите одну из пяти проблемных форм: слабое утверждение, только моки, само-ссылка, константа или фикстура.
- Перепишите тест, вызвав тестируемую функцию с конкретным входным параметром и утверждая буквальный ожидаемый результат.
- Для случаев отсутствия результата (absence) утверждайте наличие результата при другом входе в том же тесте.
- Для констант тестируйте механизм их чтения с входными данными, а не саму константу.
- Для моков утверждайте полезную нагрузку или состояние после вызова, а не факт вызова.
Примеры запросов агенту
Проверь этот тест на соответствие принципу '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 и совместимые) подхватывает его по описанию и следует шагам.