Maison >développement back-end >Golang >le test unitaire pour CSV échoue
Je souhaite utiliser le package csv pour un grand projet et je commence par quelques tests de base. Je n'arrive pas à comprendre pourquoi ce test unitaire échoue lorsque le résultat semble correspondre au résultat attendu.
Fichier :
package csv import ( "bytes" "encoding/csv" ) func generatecsv(records [][]string) (string, error) { buf := bytes.buffer{} w := csv.newwriter(&buf) for _, record := range records { if err := w.write(record); err != nil { // handle the err } } w.flush() if err := w.error(); err != nil { // handle the error } return buf.string(), nil }
Fichier de test :
package csv import "testing" func testgeneratecsv(t *testing.t) { records := [][]string{ {"first_name","last_name","user_name"}, } type args struct { records [][]string } tests := []struct { name string args args want string wanterr bool }{ // todo: add test cases. {"t1", args{records: records,}, "first_name,last_name,user_name", false}, } for _, tt := range tests { t.run(tt.name, func(t *testing.t) { got, err := generatecsv(tt.args.records) if (err != nil) != tt.wanterr { t.errorf("generatecsv() error = %v, wanterr %v", err, tt.wanterr) return } if got != tt.want { t.errorf("generatecsv() = %v, want %v", got, tt.want) } }) }
Lorsque le test est exécuté, j'obtiens le résultat suivant :
FAIL: TestGenerateCSV GenerateCSV() = first_name,last_name,user_name , want first_name,last_name,user_name
On dirait que le résultat du test correspond exactement à ce que j'ai demandé ? Quelqu'un peut-il m'aider à comprendre ce que je fais de mal ?
Pour détecter les erreurs, ajoutez cette vérification dans votre code de test.
if len(got) != len(tt.want) { t.Errorf("GenerateCSV() string len = %v, want length %v", len(got), len(tt.want)) return }
Cause : Lorsque vous utilisez w.flush pour écrire un enregistrement, cela ajoute une nouvelle ligne.
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!