SCHEMA
Validation Types
.testAsync

Schema - TestAsync

The .testAsync method performs the same functionality as .test, but works asynchronously, allowing for validation of values returned by Promises.


Syntax

.testAsync(value: any, valueName: string): Promise<Tests>
  • value: The value or a Promise of the value to be validated.
  • valueName: A string used to reference the value in the validation output.

Example

The following example demonstrates how to use .testAsync to validate a value asynchronously:

import { schema } from "vkrun"
 
const schema = schema().number().float()
 
const valueA = async (): Promise<number> => {
  return await new Promise((resolve) => {
    setTimeout(() => {
      resolve(123.5)
    }, 100)
  })
}
 
const valueA = async (): Promise<number> => {
  return await new Promise((resolve) => {
    setTimeout(() => {
      resolve(123)
    }, 100)
  })
}
 
const testA = await schema.testAsync(valueA(), "value_name")
const testB = await schema.testAsync(valueB(), "value_name")

Output testA:

{
  passedAll: true,
  passed: 3,
  failed: 0,
  totalTests: 3,
  successes: [
    {
      method: "required",
      name: "value_name",
      expect: "value other than undefined",
      received: 123.5
    },
    {
      method: "number",
      name: "value_name",
      expect: "number type",
      received: 123.5
    },
    {
      method: "float",
      name: "value_name",
      expect: "float type",
      received: 123.5
    }
  ],
  errors: [],
  time: "0s 1ms"
}

Output testB:

{
  passedAll: false,
  passed: 2,
  failed: 1,
  totalTests: 3,
  successes: [
    {
      method: "required",
      name: "value_name",
      expect: "value other than undefined",
      received: 123
    },
    {
      method: "number",
      name: "value_name",
      expect: "number type",
      received: 123
    }
  ],
  errors: [
    {
      method: "float",
      type: "invalid value",
      name: "value_name",
      expect: "float type",
      received: 123,
      message: "value_name must be a float!"
    }
  ],
  time: "0s 1ms"
}
Copyright © 2024 MIT by Mario Elvio