Как проверить ошибку валидации из go -playground / validator? - PullRequest
0 голосов
/ 03 марта 2020

Допустим, я использую 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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...