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