Mock interfaces in Go tests by defining a struct that implements the target interface and using it to inject controlled behavior into your code. This allows you to isolate unit tests from external dependencies like databases or network calls.
type MockHandler struct {
HandleFunc func(ctx context.Context, r Record) error
}
func (m *MockHandler) Handle(ctx context.Context, r Record) error {
return m.HandleFunc(ctx, r)
}
// Usage in test
mock := &MockHandler{HandleFunc: func(ctx context.Context, r Record) error {
return errors.New("mock error")
}}
multi := NewMultiHandler(mock)