Допустим, я использую go -playground / validator для проверки,
import (
"github.com/go-playground/validator"
)
type Query struct {
ID string `json:"id" validate:"required,uuid4"`
}
var validate := validator.New()
func DoSomething(query Query) error {
err = r.validate.Struct(query)
if err != nil {
return err
}
// otherwise do something else
return nil
}
и хочу проверить DoSomething
с использованием stretchr / testify,
import (
"github.com/stretchr/testify/assert"
)
func TestDoSomething(t *testing.T) {
err := DoSomething(Query{})
assert.Equal(s.T(), SomeError, err)
}
Как настроить SomeError
таким образом, чтобы тест прошел?
Сложность в том, что error
вернул validator.Struct(...)
может быть либо validator.InvalidValidationError
(ошибка в самих логах проверки c) или validator.ValidationErrors
(условие проверки не выполнено).
Нас интересует validator.ValidationErrors
, поэтому мы можем захотеть изменить
func DoSomething(query Query) error {
err = r.validate.Struct(query)
if err != nil {
if err, ok := err.(validator.ValidationErrors); ok {
return err
} else {
// panic
}
}
// otherwise do something else
return nil
}
Однако из go -площадки / тестов валидатора мы видим, что validator.ValidationErrors
- это фрагмент validator.FieldError
.
I ищу способ явно проверить ошибки валидации в функциях, которые используют go -playground / validator .