• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

223
Views
¿Hay alguna solución para esperar que una clave específica sea mayor que el valor dentro de objectContaining?

Estoy haciendo una prueba simple similar a la siguiente:

 it("Must fail", () => { const length = person.list().length; expect(person.add({ name: "John", age: -5, gender: 'M' })).toEqual( expect.objectContaining({ id: expect.any(Number), name: expect.any(String), age: expect.any(Number), gender: 'M' || 'F', // only 'M' or 'F' }) ); // to ensure that a new person was added expect(person.list().length).toEqual(length+1); });

El retorno de db.add es un objeto con el id incluido. Sin embargo, me gustaría esperar que la edad no sea solo cualquier número, sino también un número con una edad mayor o igual a cero.

Podría usar valores discretos en el género o especificar la age: 0 || 1 || 2 || 3 || ... , pero si quiero hacer coincidir el género con un patrón específico o especificar que la edad está en un rango de valores permitidos, ¿cómo podría hacerlo?

No puedo usar expect(age) inside, por lo que sé en mi investigación para esperar algo sobre el valor de las claves.

about 3 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Parece que está tratando de hacer mucho en la menor cantidad de líneas de código posible, lo que lo coloca en esta situación, intente algo como esto:

 it("should set age to 0 when provided age is lower than 0", () => { const storedPerson = person.add({ name: "John", age: -5, gender: 'M' }); expect(storedPerson.age).toBe(0); });

Si desea verificar todos los valores pero no desea escribir 5 expect hacerlo, intente esto:

 it("should properly store new person", () => { const length = person.list().length; const expectedPerson = { id: expect.any(Number), name: "John", age: 0, gender: 'M' }; const storedPerson = person.add({ name: "John", age: -5, gender: 'M' }); expect(storedPerson).toEqual(expectedPerson); expect(person.list().length).toEqual(length+1); });

Pero para ser honesto, recomendaría mi primer ejemplo. Con el segundo, probaría mucho en una sola prueba, verificando la validación adecuada de la edad, verificando si se agregó la identificación, verificando los valores asignados correctamente y verificando la longitud de las listas. Cuando esa prueba falla, no sabría qué salió mal según el nombre de la prueba. En las pruebas unitarias, intente probar lo menos posible en una prueba.

about 3 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error