Files
zopu-code/repos/effect-smol/.patterns/testing.md

45 lines
1013 B
Markdown

# Testing Patterns
## Testing Framework Selection
Use `it.effect` for tests that return Effects.
```typescript
import { assert, describe, it } from "@effect/vitest"
import { Effect } from "effect"
it.effect("should work with Effects", () =>
Effect.gen(function*() {
const result = yield* someEffect
assert.strictEqual(result, expectedValue)
}))
```
Use regular `it` for pure synchronous TypeScript functions.
```typescript
import { assert, describe, it } from "@effect/vitest"
it("should work with pure functions", () => {
const result = pureFunction(input)
assert.strictEqual(result, expectedValue)
})
```
## Testing Rules
- Never use `Effect.runSync` in tests
- Never use `expect` from Vitest; use `assert` methods instead
- Always use `TestClock` for time-dependent operations
- Group related tests using `describe`
## Type-Level Tests
Type-level tests are located in `packages/*/typetest/` and use Tstyche.
Run targeted type-level tests with:
```sh
pnpm test-types <filename>
```