yupのvalidationが複数のフィールドのエラーを返してくれない

yupのvalidationが複数のフィールドのエラーを返してくれない

以下のようにvalidateメソッドを呼ぶと、ValidationErrorをthrowする。そのエラーには最初のtitleのrequiredのエラーしか入っていない。descriptionのエラーも欲しい。

const schema = yup.object().shape({
  title: yup.string().required(),
  description: yup.string().required(),
});

try {
  schema.validate({
    title: "",
    description: "",
  })
} catch (e: any) {
  if (e instanceof(ValidationError)) {
    console.log(e.inner)
  }
}

e.innerにはtitleのエラーしか入っていない。

e.inner[0].path 
=> "title"
e.inner[0].message
=> "title is a required field"

解決

schema.validateを呼ぶ時、abortEarlyオプションをつける。

    yupSchema.validateSync({
        title: "",
        description: "",
      }, 
      { abortEarly: false }
    )
  } catch (e) {
    if (e instanceof(ValidationError)) {

ValidationError#innerは以下のようになる。

e.inner[0].path 
=> "title"
e.inner[0].message
=> "title is a required field"

e.inner[1].path 
=> "description"
e.inner[1].message
=> "description is a required field"