Files
SealShare/.claude/skills/testing-best-practices/rules/naming.md
T
Andreas Reinhold / reiniandClaude Opus 5 92b3b3de56 Regenerate Boost guidelines and skills
Generated by boost:update for Boost 2.8, which replaces the pest-testing
skill with testing-best-practices and adds infer-conventions.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017XYnWFt9pJEwvAmNFN38XD
2026-09-10 10:42:22 +02:00

2.2 KiB

Naming and Structure

File Layout

  • Name each test file {ClassName}Test.php.
  • Place each test file at the same relative path as the class under test. The class app/Actions/DeleteTeam.php gets the test tests/Unit/Actions/DeleteTeamTest.php.
  • Follow the project's convention for fixture files. If none exists, put fixtures in tests/Fixtures/ and load them by path.
  • Move large literal values out of the test body and into fixture files.

Test Function

Use the test function used by other files in the same directory. If no neighboring test files exist:

  • Use it() for the behavior of the code, and write the name as a verb phrase.
  • Use test() for a declarative fact, such as a grant in a policy, the labels of an enum, or the shape of a serialized model.

Use one Pest declaration style in each file. Use either it() or test() consistently.

Naming Tests

The name of a test is a specification. State the user-visible result and the condition that causes it.

  • Name the behavior, and not the method under test. The file name already gives the class.
  • Give the exact status code in the name of a test for an API error.
  • Do not write Given, When, or Then in the name.
it('returns 401 when no token is provided', function () { ... });
it('does not include deployments from deleted environments', function () { ... });
it('falls back to the default region when none is configured', function () { ... });

Use a verb that describes a result, such as returns, renders, creates, dispatches, rejects, forbids, falls back, or does not.

Do not write it('works correctly') or it('returns data'), because neither specifies a meaningful result. Do not write it('handleMethod creates record'), because it names a method rather than behavior.

Grouping

Use describe() if one file covers separate actions in a lifecycle. An example is a controller with the actions index, show, store, update, and destroy.

Do not use describe() in these cases:

  • The file covers one action or one flow.
  • The tests are different only in the input value. Use a dataset instead.
  • The group adds a level but does not make the file easier to read.