1.4 KiB
1.4 KiB
Behavior Test Guideline
Goal
- Treat tests as product contracts: input -> execution -> result.
- Block regressions on real outcomes (payload, DB write fields, returned contract, lifecycle events).
Mandatory Rules
- Do not use
toHaveBeenCalled()as the only assertion. - Every test must assert at least one concrete business value.
- Every worker handler must include:
- failure path
- success path
- key branch path
- One bug fix must add at least one regression test.
Mock Rules
- Must mock: database, AI providers, storage, external HTTP.
- Must not mock: the function under test, business constants.
- Avoid self-fulfilling mocks (
mock return Xthen only assert returned X).
Required Layers
tests/unit/helpers: payload parsing and helper decisions.tests/integration/api/contract: route-level contracts and auth/validation.tests/unit/worker: worker branch + persistence assertions.tests/integration/chain: queue payload handoff and worker consumption behavior.tests/unit/optimistic: SSE and target-state UI consistency.
Execution Commands
npm run test:behavior:unitnpm run test:behavior:apinpm run test:behavior:chainnpm run test:behavior:guardsnpm run test:behavior:full
Merge Gate
- Behavior guards must pass.
- New route/task type must be reflected in catalogs/matrices.
- Regression changes without behavior tests are not complete.