Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/carrot-foundation/methodology-rules --skill rule-testing명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | rule-testing |
| description | Rule mapping for testing |
Apply this rule whenever work touches:
*.spec.ts*.e2e.spec.ts*.test-cases.tsAll test code in this repository runs under Vitest. Tests must be deterministic, isolated, and free of real-world data.
| Pattern | Purpose |
|---|---|
{name}.spec.ts | Unit tests, co-located with source |
{name}.e2e.spec.ts | End-to-end / integration tests |
{name}.test-cases.ts | Shared test data and fixtures |
The test environment loads variables from .env-files/.env.test.
Never hardcode test values that could be randomized. Use the following tools:
@faker-js/faker for primitive values (strings, numbers, dates, UUIDs).zocker for generating objects that conform to a Zod schema.@carrot-fndn/shared/testing:
stubRuleInput() - creates a valid RuleInput with sensible defaults.stubDocument() - creates a valid document fixture.createStubFromSchema() - generates a stub from any Zod schema.Tests must never contain real-world identifiable information. Use obviously synthetic values:
| Field | Fake example |
|---|---|
| Company name | VERDE CAMPO LTDA, EXEMPLO INDUSTRIAS |
| CNPJ | 11.222.333/0004-55, 77.888.999/0001-22 |
| Vehicle plate | FKE1A23, HIJ3K56 |
| Address | Rua Modelo, 100, Av. Principal, 500 |
| Person name | Pedro Santos, Ana Ferreira |
This applies to raw OCR text fixtures as well: both the input text and expected assertion values must use fake data consistently.
When a function must be tested against multiple scenarios, use it.each:
it.each([
{ input: 0, expected: 'zero' },
{ input: 1, expected: 'one' },
{ input: 2, expected: 'two' },
])('converts $input to "$expected"', ({ input, expected }) => {
expect(numberToWord(input)).toBe(expected);
});
Prefer expect.objectContaining when only a subset of fields matters for the assertion. This keeps tests resilient to unrelated field additions:
expect(result).toEqual(
expect.objectContaining({
status: 'APPROVED',
score: expect.any(Number),
}),
);