スキル一覧に戻る
IvanTorresEdge

testing-patterns

by IvanTorresEdge

0🍴 1📅 2026年1月13日
GitHubで見るManusで実行

SKILL.md


name: testing-patterns description: Table-driven tests, mocking strategies, and comprehensive testing patterns. Use when writing tests.

Testing Patterns Skill

Comprehensive Go testing patterns following community best practices.

When to Use

Use this skill when writing or reviewing tests.

Table-Driven Tests

func TestAdd(t *testing.T) {
    tests := []struct {
        name string
        a, b int
        want int
    }{
        {"positive", 1, 2, 3},
        {"negative", -1, -2, -3},
        {"zero", 0, 0, 0},
    }

    for _, tt := range tests {
        t.Run(tt.name, func(t *testing.T) {
            got := Add(tt.a, tt.b)
            if got != tt.want {
                t.Errorf("Add(%d, %d) = %d; want %d", tt.a, tt.b, got, tt.want)
            }
        })
    }
}

Using Testify

import (
    "testing"
    "github.com/stretchr/testify/assert"
    "github.com/stretchr/testify/require"
)

func TestService_GetUser(t *testing.T) {
    svc := NewService()
    user, err := svc.GetUser(1)

    require.NoError(t, err)
    assert.Equal(t, "John", user.Name)
    assert.Greater(t, user.ID, 0)
}

Mocking with Interfaces

type UserRepository interface {
    GetUser(id int) (*User, error)
}

type mockUserRepo struct {
    users map[int]*User
}

func (m *mockUserRepo) GetUser(id int) (*User, error) {
    if user, ok := m.users[id]; ok {
        return user, nil
    }
    return nil, ErrNotFound
}

func TestService(t *testing.T) {
    repo := &mockUserRepo{
        users: map[int]*User{
            1: {ID: 1, Name: "John"},
        },
    }
    svc := NewService(repo)
    // test with mock
}

HTTP Testing

func TestHandler(t *testing.T) {
    req := httptest.NewRequest("GET", "/users/1", nil)
    w := httptest.NewRecorder()

    handler := NewHandler(mockService)
    handler.GetUser(w, req)

    assert.Equal(t, http.StatusOK, w.Code)
    assert.Contains(t, w.Body.String(), "John")
}

Best Practices

  • Use table-driven tests
  • Test one thing per test
  • Use testify for clarity
  • Mock external dependencies
  • Test edge cases
  • Run with race detector: go test -race

スコア

総合スコア

60/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新がある

0/10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

0/5

レビュー

💬

レビュー機能は近日公開予定です