1 回答

TA貢獻1873條經驗 獲得超9個贊
如果你想對一個接受的函數進行單元測試validator.ValidationErrors,只需自己構造測試值,使用實現的類型(可能是結構)FieldError。
方法不多,但如果你只想實現你的函數調用的那些,你可以嵌入validator.FieldError到結構類型中:
type mockFieldError struct {
validator.FieldError
tag string
field string
}
func (e mockFieldError) Tag() string { return e.tag }
func (e mockFieldError) Field() string { return e.field }
并構造validator.ValidationErrors(注意,嵌入式validator.FieldError是未初始化的,所以要確保被測函數沒有調用其他你沒有實現的方法,否則會panic):
ve := validator.ValidationErrors{
mockFieldError{tag: "a", field: "field1"},
mockFieldError{tag: "b", field: "field2"},
}
所以現在用上面的值調用foo編譯并返回一個字符串,你可以根據你的預期輸出斷言:
s := foo(ve)
fmt.Println(s) // [a:field1 b:field2]
完整的游樂場:https ://go.dev/play/p/-btZ6lrKk4V
- 1 回答
- 0 關注
- 124 瀏覽
添加回答
舉報