Saya mahu menggunakan pakej csv untuk projek besar, dan saya mulakan dengan beberapa ujian asas. Saya tidak dapat mengetahui mengapa ujian unit ini gagal apabila output kelihatan sepadan dengan output yang dijangkakan.
Fail:
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 }
Fail ujian:
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) } }) }
Apabila ujian dijalankan, saya mendapat output berikut:
FAIL: TestGenerateCSV GenerateCSV() = first_name,last_name,user_name , want first_name,last_name,user_name
Nampaknya output ujian betul-betul seperti yang saya minta? Bolehkah sesiapa membantu saya mengetahui apa yang saya lakukan salah?
Untuk menangkap ralat, tambahkan semakan ini dalam kod ujian anda.
if len(got) != len(tt.want) { t.Errorf("GenerateCSV() string len = %v, want length %v", len(got), len(tt.want)) return }
Punca: Apabila anda menggunakan w.flush untuk menulis rekod, ia menambah baris baharu.
Atas ialah kandungan terperinci pergi ujian unit untuk CSV gagal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!