Fasenberg
tengo un mapModule
donde importo componentes y los exporto:
import ComponentName from '../components/ComponentName';
export default {
name: ComponentName,
};
como puedo probar eso mapModule
tiene las claves exportadas correctas, los valores y que no son nulos o indefinidos?
En la versión 23.3.0 de broma,
expect(string).toMatch(string)
espera una cadena.
Usar:
const expected = { name:'component name' }
const actual = { name: 'component name', type: 'form' }
expect(actual).toMatchObject(expected)
el resultado es pasar la prueba
toufek khoury
puedes usar uno de esos:
toEqual y toMatchObject son comparadores de plantillas para objetos:
let Obj = {name: 'component name', id: 2};
expect(oneObj).toEqual({name: 'component name'}) // false, should be exactly equal all Obj keys and values
expect(oneObj).toMatchObject({name: 'component name'}) // true
o use fácilmente toHaveProperty :
let Obj = {name: 'component name'};
expect(oneObj).toHaveProperty('name') // true
expect(oneObj).toHaveProperty('name', 'component name') // true
-
.toHaveProperty es lo que estaba buscando! Gracias
– KJ Sudarshan
2 de septiembre de 2021 a las 7:52
-
Tenemos que agregar los nombres de las propiedades dentro de una matriz
– Codedeyya
3 ene a las 23:53
-
obtener expect(…).toMatchObject no es un error de función
–Sri Vineeth
14 de febrero a las 15:15
torres
Manten eso en mente .toMatchObject
cheques
“que un objeto de JavaScript coincide con un subconjunto de las propiedades de un objeto”.
Asi que toMatchObject
puede tener afirmaciones no intencionadas como:
expect({ a: 1, b: 2 }).toMatchObject({ a: 1 }); // pass
Si desea hacer coincidir un objeto exactamente, debe usar .toStrictEqual
disponible desde jest 23
:
expect({ a: 1, b: 2 }).toStrictEqual({ a: 1 }); // fail
-
En realidad, esa es exactamente la afirmación para la que está diseñado MatchObject. Puedes usar toEqual si no quieres ese comportamiento…
– Dan
29 oct 2020 a las 19:40
-
Esta respuesta realmente debería ser la solución preferida para la mayoría de los casos.
– mikemaccana
9 de marzo de 2021 a las 19:49
Solo agregando este consejo, pensé que le dio una granularidad aún mejor a mis propias pruebas, especialmente al comparar argumentos con servicios simulados:
expect.objectContaining({
url: expect.stringContaining('https://'),
})
Alternativamente, puede usar expresiones regulares con expect.stringMatching
que prueba la expresión regular dada contra el valor. Con buena pinta.
Para una sola clave, puede consultar
expect(Boolean(obj[prop])).toBe(true | false);
Para clave múltiple (donde todos deben estar presentes) puede usar,
expect(Boolean(obj[prop1]) && Boolean(obj[prop2])).toBe(true | false);
Para clave múltiple (donde cualquiera debe estar presente) puede usar
expect(Boolean(obj[prop1]) || Boolean(obj[prop2])).toBe(true | false);
beeinger
Otra forma es:
expect(JSON.stringify(object)).toBe(JSON.stringify(object))
Esto asegurará que los objetos sean iguales.
Sin embargo usando esto:
expect(object).toMatchObject(object)
es la mejor opción en la mayoría de los casos.