package errs import "testing" // AssertErrorContains 检查错误是否包含预期子字符串 // 用于替代脆弱的直接字符串匹配 func AssertErrorContains(t *testing.T, err error, wantSubstring string) { t.Helper() if err == nil { t.Fatalf("expected error containing %q, got nil", wantSubstring) } if !containsSubstring(err.Error(), wantSubstring) { t.Fatalf("error = %q, want containing %q", err.Error(), wantSubstring) } } func containsSubstring(s, substr string) bool { return len(substr) <= len(s) && containsAt(s, substr, 0) } func containsAt(s, substr string, start int) bool { for i := start; i <= len(s)-len(substr); i++ { if s[i:i+len(substr)] == substr { return true } } return false }