No tienes acceso a esta clase

¬°Contin√ļa aprendiendo! √önete y comienza a potenciar tu carrera

Aprende todo un fin de semana sin pagar una suscripci√≥n ūüĒ•

Aprende todo un fin de semana sin pagar una suscripci√≥n ūüĒ•

Regístrate

Comienza en:

3D
4H
20M
26S

Generando Mocks

15/25
Recursos

Aportes 10

Preguntas 3

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

Hola, debes tener en cuenta que las √ļltimas versiones de FakerJS la importaci√≥n debe ser as√≠:

import { faker } from '@faker-js/faker';

No es necesario crear data manualmente para hacer las pruebas de conexión a las API, se puede generar de manera automatizada utilizando una lebrería que genera datos de forma aleatoria.

Faker js

desde la terminal vamos a instalarla

npm i faker-js/faker --save-dev

ahora vamos a crear un archivo llamado product.mock.ts en la carpeta de models, donde crearemos data de prueba con faker

product.mock.ts

import { faker } from '@faker-js/faker';
import { Product } from './product.model';

export const generateOneProduct = (): Product => {
  return {
    id: faker.datatype.uuid(),
    title: faker.commerce.productName(),
    price: parseInt(faker.commerce.price(), 10),
    description: faker.commerce.productDescription(),
    category: {
    id: faker.datatype.number(),
    name: faker.commerce.department()
    },
    images: [faker.image.imageUrl(), faker.image.imageUrl()]
  };
}

export const generateManyProducts = (size = 10): Product[] => {
  const products: Product[] = [];
  for (let index = 0; index < size ; index++) {
    products.push(generateOneProduct());
  }
  return [...products];
}

finalmente haremos los siguientes cambios en product.service.spec.ts haciendo una importación de product.mock.ts

product.service.spec.ts

import { generateManyProducts } from '../models/product.mock';

describe('tests for getAllSimple', () => {
    it('should return a product list', () => {
      //Arrange
      const mockData: Product[] = generateManyProducts(2);
      //Act
      productsService.getAllSimple()
      .subscribe((data) => {
        //Assert
        expect(data.length).toEqual(mockData.length);
        //doneFn();
      });
      //http config
      const url = `${environment.API_URL}/api/v1/products`;
      const req = httpController.expectOne(url);
      req.flush(mockData);
      httpController.verify();
    });
  });

Quizá muchos ya sepan esto, peero, si no, puedes utilizar la desestructuración para que sea un poco más cómodo utilizar faker al generar los objectos, algo así:

 const {commerce, datatype, image} = faker;
  return {
    id: datatype.uuid(),
    taxes: 2,
    category: {
      id: datatype.number(),
      name: commerce.department()
    },
    description: commerce.productDescription(),
    images: [image.imageUrl(), image.imageUrl()],
    price: parseInt(commerce.price()),
    title: commerce.productName()
  }; 

Para quienes utilizan yarn, lo pueden instalar con:
yarn add @faker-js/faker --save-dev

Yo me pregunto, esto de las pruebas cada vez se complica m√°s y puede llegar un momento que tengamos mucho c√≥digo implementado en test unitarios etc ¬ŅQu√© pasa si las pruebas est√°n mal y dan falsos positivos? ¬ŅQui√©n hace el test de los tests?, ¬ŅQui√©n vigila al vigilante?

Generando Mocks


Para probar nuestros servicios que hacen peticiones, fácilmente podríamos poner datos falso de manera manual y jugar con ellos, pero a la larga, agregar esos datos falsos puede ser algo repetitivo y tedioso, que puede hacer crecer nuestro código.

En estos casos, ser√≠a √ļtil encontrar una forma de poblar esos datos de manera aleatoria. La soluci√≥n, es hacer uso de la librer√≠a Faker.js.

ūüí° Faker.js es una librer√≠a JavaScript que se utiliza para generar datos aleatorios, como nombres, direcciones, n√ļmeros de tel√©fono y otros tipos de informaci√≥n. La librer√≠a proporciona una amplia variedad de m√©todos para generar diferentes tipos de datos y permite personalizar la salida para adaptarse a tus necesidades.

Esta librería la puedes utilizar para rellenar tu base de datos de prueba con datos aleatorios o para generar datos de prueba para tus pruebas unitarias o de integración.

‚ö†ÔłŹ Es importante tener en cuenta que los datos generados por Faker.js no son reales y no deben utilizarse para fines serios o de producci√≥n.

Para utilizar Faker.js, debes instalar la librería a través de npm con el comando npm i -D @faker-js/faker y luego importarla en tu proyecto. Una vez importada, puedes utilizar sus métodos para generar datos aleatorios.

Por ejemplo, para generar un nombre aleatorio puedes utilizar el método faker.name.findName(). También puedes utilizar la propiedad faker.locale para cambiar el idioma de la salida y la propiedad faker.seed para establecer una semilla aleatoria para reproducir resultados específicos.

Generando Mocks


Para probar nuestros servicios que hacen peticiones, fácilmente podríamos poner datos falso de manera manual y jugar con ellos, pero a la larga, agregar esos datos falsos puede ser algo repetitivo y tedioso, que puede hacer crecer nuestro código.

En estos casos, ser√≠a √ļtil encontrar una forma de poblar esos datos de manera aleatoria. Para lo cual, podemos hacer uso de la librer√≠a Faker.js.

ūüí° Faker.js es una librer√≠a JavaScript que se utiliza para generar datos aleatorios, como nombres, direcciones, n√ļmeros de tel√©fono y otros tipos de informaci√≥n. La librer√≠a proporciona una amplia variedad de m√©todos para generar diferentes tipos de datos y permite personalizar la salida para adaptarse a tus necesidades.

Esta librería la puedes utilizar para rellenar tu base de datos de prueba con datos aleatorios o para generar datos de prueba para tus pruebas unitarias o de integración.

‚ö†ÔłŹ Es importante tener en cuenta que los datos generados por Faker.js no son reales y no deben utilizarse para fines serios o de producci√≥n.

Para utilizar Faker.js, debes instalar la librería a través de npm con el comando npm i -D @faker-js/faker y luego importarla en tu proyecto. Una vez importada, puedes utilizar sus métodos para generar datos aleatorios.

Por ejemplo, para generar un nombre aleatorio puedes utilizar el método faker.name.findName(). También puedes utilizar la propiedad faker.locale para cambiar el idioma de la salida y la propiedad faker.seed para establecer una semilla aleatoria para reproducir resultados específicos.

Si no quieren generar un for en generateManyProducts, pueden hacer lo siguiente:

export const generateManyProducts = ( size = 10 ) => {
    return new Array( size )
    .fill( null )
    .map( () => ( { ...generateOneTicket() } ) );
}

Curso sobresaliente , gracias Nicol√°s por el empe√Īo que pones en tus videos !

Me fue de mucha utilidad este capitulo de mock, gracias crack.