es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo simular una propiedad de sólo lectura en Jest?

Tengo una función que transforma una cadena en mayúsculas a una cadena con guiones antes de las mayúsculas y convierte todo a minúsculas.

formattedType() {
  // Agrega un guion antes de las mayúsculas y convierte todo a minúsculas
  const type = this.props.type?.split(/(?=[A-Z])/).join("-").toLowerCase();
  return type;
}

describe("método formattedType", () => {
  it("debería transformar la cadena en minúsculas con guiones como separador", () => {
    // dado
    FormTrack.prototype.props.type = 'testOption';

    // cuando
    const actualResult = FormTrack.prototype.formattedFormType();

    // entonces
    expect(actualResult).toBe('test-option');
  });
});

Pero estoy obteniendo el siguiente error:

Cannot assign to 'type' because it is a read-only property

¿Cómo puedo simular las propiedades ‘type’ para cubrir la función formattedType()?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para simular el tipo de propiedades y cubrir la función formattedType(), puedes crear una nueva instancia del prototipo FormTrack y asignar un valor simulado al objeto props. Aquí hay un ejemplo usando Jest:

    describe("método formattedType", () => {
      it("debería transformar la cadena en minúsculas con un guion como separador", () => {
        // dado
        const formTrack = new FormTrack();
        formTrack.props = { type: 'testOption' };
    
        // cuando
        const actualResult = formTrack.formattedType();
    
        // entonces
        expect(actualResult).toBe('test-option');
      });
    });
    

    En este ejemplo, creamos una nueva instancia del prototipo FormTrack y asignamos un valor simulado al objeto props con type: 'testOption'. Luego llamamos a la función formattedType() en esta instancia y comprobamos que el resultado sea 'test-option'. Al simular el objeto props de esta manera, podemos cubrir y probar la función formattedType() sin modificar la propiedad type de solo lectura.

Comments are closed.