Agent Skills: Go Testing Patterns

Go testing patterns for Beluga AI v2. Use when writing tests, mocks, or benchmarks.

UncategorizedID: lookatitude/beluga-ai/go-testing

Install this agent skill to your local

pnpm dlx add-skill https://github.com/lookatitude/beluga-ai/tree/HEAD/.claude/skills/go-testing

Skill Files

Browse the full folder contents for go-testing.

Download Skill

Loading file tree…

.claude/skills/go-testing/SKILL.md

Skill Metadata

Name
go-testing
Description
Go testing patterns for Beluga AI v2. Use when writing tests, mocks, or benchmarks.

Go Testing Patterns

Table-Driven Tests

func TestGenerate(t *testing.T) {
    tests := []struct {
        name    string
        input   []schema.Message
        want    *schema.AIMessage
        wantErr error
    }{
        {name: "simple", input: []schema.Message{schema.HumanMessage("hello")}, want: &schema.AIMessage{...}},
        {name: "empty input errors", input: nil, wantErr: &core.Error{Code: core.ErrInvalidInput}},
    }
    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            got, err := model.Generate(context.Background(), tt.input)
            if tt.wantErr != nil { require.Error(t, err); return }
            require.NoError(t, err)
            assert.Equal(t, tt.want, got)
        })
    }
}

Stream + Context Cancellation

func TestStreamCancellation(t *testing.T) {
    ctx, cancel := context.WithCancel(context.Background())
    count := 0
    for _, err := range model.Stream(ctx, msgs) {
        count++
        if count == 2 { cancel() }
        if err != nil { assert.ErrorIs(t, err, context.Canceled); break }
    }
    assert.LessOrEqual(t, count, 3)
}

Mocks

Location: internal/testutil/mock<package>/. Every mock has configurable function fields + error injection + call counting.

Rules

  • *_test.go alongside source, not in separate dirs.
  • Use testify/assert (non-fatal) and testify/require (fatal).
  • Integration tests: //go:build integration tag, *_integration_test.go.
  • Benchmarks: *_bench_test.go, b.ReportAllocs(), b.RunParallel().
  • Compile-time check: var _ Interface = (*Impl)(nil).
  • Always test: error paths, context cancellation for streams, nil/empty inputs.