Skip to content

Instantly share code, notes, and snippets.

@joaovictorino
Last active October 7, 2023 01:40
Show Gist options
  • Save joaovictorino/f16a0f28168a328b35bc9c0894f61cca to your computer and use it in GitHub Desktop.
Save joaovictorino/f16a0f28168a328b35bc9c0894f61cca to your computer and use it in GitHub Desktop.
Testes da API de consulta de contas

Testes da API de consulta de contas

Agora vamos testar nossa API de consulta de contas, portanto adicione os pacotes abaixo no projeto "web".
Abra o terminal, navegue até a pasta "web" e execute os comandos abaixo

npm install jest@29.6.2 ts-jest@29.1.1 @types/jest@29.5.3 node-mocks-http@1.13.0 -D
npx ts-jest config:init

Agora vá até o arquivo "package.json" do projeto "web", na tag "script", adicione a linha abaixo

  "test": "jest"

E no projeto "core", no arquivo "package.json", altere a linha "test" conforme abaixo

  "test": "jest && npm run test:cucumber" 

Agora volte no projeto "web" e na raiz crie o seguinte caminho para os testes "__tests__/pages/api/contas" e crie o arquivo "[numero].test.ts" com o conteúdo abaixo

import { createMocks } from "node-mocks-http";
import consultar from "../../../../pages/api/contas/[numero]";

describe("API consulta de contas", () => {
    test("consulta com sucesso", async() => {
        const { req, res } = createMocks({
            method: "GET",
            url: "api/contas/",
            query: {
                numero: "123456",
            }
        });

        await consultar(req, res);
        expect(res.statusCode).toBe(200);
        expect(res._getJSONData()).toMatchObject(
            expect.objectContaining({
                numero: expect.any(String),
                saldo: expect.any(Number)
            })
        );
    });

    test("consulta sem registro", async() => {
        const { req, res } = createMocks({
            method: "GET",
            url: "api/contas/",
            query: {
                numero: "111111",
            }
        });

        await consultar(req, res);
        expect(res.statusCode).toBe(404);
        expect(res._getJSONData()).toMatchObject(
            expect.objectContaining({
                mensagem: "conta nao encontrada"
            })
        );
    });
});

Agora vamos rodar os testes do projeto "web" com o comando abaixo

npm run test

Caso queira rodar os testes dos dois projeto, navegue até a raiz do projeto, onde estão declarados os workspaces e execute

npm run test --workspaces

Se quiser rodar os testes em apenas um projeto, pode escolher entre os comandos abaixo

npm run test -w core
npm run test -w web
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment