Ich möchte das CSV-Paket für ein großes Projekt verwenden und beginne mit einigen grundlegenden Tests. Ich kann nicht herausfinden, warum dieser Komponententest fehlschlägt, wenn die Ausgabe mit der erwarteten Ausgabe übereinstimmt.
Datei:
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 }
Testdatei:
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) } }) }
Wenn der Test läuft, erhalte ich folgende Ausgabe:
FAIL: TestGenerateCSV GenerateCSV() = first_name,last_name,user_name , want first_name,last_name,user_name
Sieht aus, als ob die Testausgabe genau das ist, wonach ich gefragt habe? Kann mir jemand helfen herauszufinden, was ich falsch mache?
Um Fehler zu erkennen, fügen Sie diese Prüfung in Ihren Testcode ein.
if len(got) != len(tt.want) { t.Errorf("GenerateCSV() string len = %v, want length %v", len(got), len(tt.want)) return }
Ursache: Wenn Sie w.flush zum Schreiben eines Datensatzes verwenden, wird eine neue Zeile hinzugefügt.
Das obige ist der detaillierte Inhalt vonDer Go-Unit-Test für CSV schlägt fehl. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!