No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Adquiere por un año todos los cursos, escuelas y certificados por un precio especial.

Antes: $249

Currency
$219/año

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Comprar ahora

Termina en:

0D
17H
9M
32S

Mocking

18/27
Recursos

Aportes 5

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

o inicia sesión.

// Creamos el libro fake que será devuelto por el mock

const fakeBooks = [
  {
    _id: 1,
    name: ‘Harry Potter’,
  },
];

// Suplanta a nuestra mongoLib real

const mongoLibStub = {
  getAll: () ⇒ […fakeBooks],
c. reate: () ⇒ {},
}

// Suplantamos al método

jest.mock(’…/lib/mongo.lib’, () ⇒ jest.fn().mockImplementation(() ⇒ mongoLibStub))

Conforme avanza el curso me siento poderoso 😄

Tengo una duda: ¿Por qué manda a llamar a jest.ClearAllMocks() dentro de beforeEach()?

Es decir, el código del profe funciona, sin embargo si yo lo hubiese tenido que realizar, mi lógica me diría que lo pusiera dentro de afterAll por otro lado mi lógica me dice que el código del profe debería fallar y sin embargo no lo hace, no entiendo por qué?

NOTA: Intenté publicar esto como pregunta, pero no me dejó pues me indicaba que la pregunta ya había sido hecha y contestada, sin embargo las respuestas que me ofrecía eran sobre algo totalmente diiferente

Mocking

Suplantando MongoLib

Se utilizo el método jest.mock, al cual se le indica la clase que va suplantar

jest.mock('../lib/mongo.lib', () => jest.fn().mockImplementation(() => MongoLibStub));

Para eso se crea la clase MongoLibStub, en la cual se contendrán los métodos getAll, y create los cuales servirán para retornar un resultado similar a la clase original.

const MongoLibStub = {
  getAll: () => fakeBooks,
  create: () => { },
};

fakeBooks hace referencia a un arreglo de objetos de tipo Book ficticios, los cuales serán retornados por el método getAll.

const fakeBooks = [
  {
    _id: '1',
    name: 'Harry Potter',
  },
  {
    _id: '2',
    name: 'Principito',
  },
];

Con esto ya se suplantaría el comportamiento de la clase MongoLib y sus métodos, es importante mencionar que la clase MongoLibStub puede crecer con forme se necesite.

Se aconseja como buena practica utilizar el método clearAllMocks() de jest para hacer una limpia de los mocks creados anteriormente.

jest.clearAllMocks();
test("should return books", async () => {
    const books = await service.getBooks();

    expect(books).toBeTruthy();
    expect(books.length).toBe(1);
    expect(books[0].name).toBe("harry potter");
  });