29 lines
732 B
Go
29 lines
732 B
Go
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
|
|
}
|