Tests unitaires Les méthodes de gestion des erreurs de fonction dans le langage Go incluent : Créer une entrée fictive : créer un objet fictif avec des erreurs contrôlées. Affirmer le message d'erreur : faites correspondre le message d'erreur renvoyé avec le message attendu. Couvrir les conditions d'erreur : rédigez des cas de test pour toutes les conditions d'erreur possibles.
Tests unitaires dans la gestion des erreurs des fonctions du langage Go
Contexte
Dans le langage Go, les erreurs dans les fonctions sont gérées en vérifiant les valeurs de type erreur
. Pour garantir une gestion correcte des erreurs, il est crucial d’effectuer des tests unitaires. error
类型的值来处理函数中的错误。为了确保错误处理的正确性,执行单元测试至关重要。
单元测试策略
对函数中的错误处理进行单元测试时,以下策略非常有效:
assert.Equal()
Créer une simulation en entrée : Créer un objet fictif (par exemple, simuler un système de fichiers ou un appel réseau), ces objets renvoient des erreurs contrôlées.
Assert error messages : utilisez une bibliothèque d'assertions telle que assert.Equal()
pour vérifier que le message d'erreur renvoyé correspond au message d'erreur attendu.
: rédigez des cas de test pour chaque situation d'erreur possible. Cela garantira que la logique de gestion des erreurs fonctionne comme prévu dans tous les cas.
Cas pratique
🎜🎜Considérez la fonction suivante qui calcule la somme de deux nombres : 🎜func Sum(a, b int) (int, error) { if a < 0 || b < 0 { return 0, errors.New("non-negative integers only") } return a + b, nil }
import ( "errors" "testing" ) func TestSum(t *testing.T) { tests := []struct { a, b int expected int err error }{ {a: 1, b: 2, expected: 3, err: nil}, {a: -1, b: 2, expected: 0, err: errors.New("non-negative integers only")}, } for _, tt := range tests { t.Run("test", func(t *testing.T) { sum, err := Sum(tt.a, tt.b) if sum != tt.expected { t.Errorf("Expected %d, got %d", tt.expected, sum) } if !errors.Is(err, tt.err) { t.Errorf("Expected error %q, got %q", tt.err, err) } }) } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!