Tengo un código de la siguiente manera:
describe("Dynamic testing fields validations", () => { it.each` field | value | expectedMessage ${"username"} | ${""} | ${"username is not allowed to be empty"} ${"username"} | ${"b".repeat(4)} | ${"username length must be at least 5 characters long"} ${"username"} | ${"b".repeat(21)} | ${"username length must be less than or equal to 20 characters long"} ${"email"} | ${""} | ${"email is not allowed to be empty"} ${"email"} | ${"mailcom"} | ${"email must be a valid email"} ${"password"} | ${""} | ${"password is not allowed to be empty"} `( `return $expectedMessage when $field is ${"$value"} === "" ? "${"empty"}" : "$value" characters long`, async ({ field, expectedMessage, value }) => { user.username = value; user.password = value; user.email = value; const res = await exec(); const { validationErrors: { details }, } = res.body; const result = Object.assign({}, ...details); expect(result[field]).toBe(expectedMessage); } ); });Estoy recibiendo el siguiente error :
Esta condición siempre devolverá 'falso' ya que los tipos '"$valor"' y '""' no se superponen cuando realizo la verificación condicional en el operador ternario.
He probado de todo pero sin éxito. ¿Puede una buena alma darme una indicación de cómo solucionar esto y por qué estoy recibiendo este error?
creo que tu problema es por esto
${"$value"} === "" ? "${"empty"}" : "$value"Por tu lógica puedo entender así
Si su valor está vacío, devuelve ${"empty"} (que es similar a su "$value" )
Si su valor no está vacío, también devuelve "$value"
Puedes simplificar esa lógica de esta manera.
`return $expectedMessage when $field is "$value" characters long`