Olá pessoal! Fui inspirado a escrever este artigo por meus alunos e pupilos. Costumo recomendar que aprendam assim que se familiarizarem com o processo de automação de teste em . Vamos ver quais são as características de usar TypeScript em sua estrutura de automação de teste em termos de teste de API REST… TypeScript JavaScript Você pode encontrar o código completo de um projeto de teste . aqui TypeScript Não vamos nos aprofundar muito no que é e como ele é diferente do e declarar o importante - . Mas, muito importante também - depende diretamente do (plataforma ). o TypeScript JavaScript é linguagem de programação a JavaScript Node.js é apresentado como um pacote , então vejo isso apenas como com alguns recursos interessantes. O TypeScript Node.js JavaScript Para saber mais sobre a linguagem em si e o que ela tem a oferecer - visite enquanto falamos sobre seus recursos em termos de automação de testes… o site oficial Configuração do projeto Vamos passar pelo processo de criação do projeto de automação de teste no : TypeScript Crie um projeto Node.js. npm init -y Instale o pacote . TypeScript npm i typescript Gere uma configuração padrão para o projeto - . TypeScript tsconfig.json npx tsc --init O comando acima irá gerar um arquivo de configuração padrão, mas recomendo encurtá-lo bastante para algo : assim { "compilerOptions": { "baseUrl": "./", "module": "esnext", "target": "esnext", "sourceMap": false, "moduleResolution": "node", "allowJs": true, "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "paths": { "*": ["./*"] } } } Esta configuração contém o mínimo necessário: usa a versão mais recente , do EcmaScript disponibiliza importações JSON, permite usar o caminho absoluto nas importações. Você pode estender sua configuração usando . a documentação oficial seleção de ferramentas Você pode usar qualquer ferramenta que o ecossistema tenha a oferecer, mas, em minha experiência, a maioria dos escolhe por alguns bons motivos: Node.js engenheiros que trabalham com TypeScript Jest ótimo suporte da comunidade (atualizações, respostas, documentos, exemplos de código), configuração flexível. Anteriormente, eu me divertia usando + para configurar o núcleo do projeto, mas agora estou me atendo ao também, pois ele contém um executor de testes e uma biblioteca de asserções. Mocha Chai Jest parece ser o cliente HTTP mais popular, então sugiro que esta seja sua escolha também. Axios Não posso dizer que você é forçado a usar isso para sua configuração, mas estou dizendo que é a coisa usual quando você examina os projetos. Agora, basta instalar esses pacotes como dependências: npm i jest axios Coleções de tipos Alguns pacotes (como ) contêm tipos dentro, mas não. Além disso, requer um pacote junto com para funcionar corretamente - o primeiro habilita os recursos e o segundo permite que você use . Axios TypeScript Jest & Mocha o Jest ts-jest @types/jest do TypeScript o IntelliSense Portanto, lembre-se - se você não tiver o recurso de preenchimento automático ao tentar usar alguns dos pacotes - provavelmente está faltando declarações de tipo. Vamos instalar extensões relacionadas (pacotes) também: ao TypeScript npm i ts-jest @types/jest Configuração requer uma predefinição de configuração , portanto, você deve declará-la em seu arquivo de configuração (ou ): Jest ts-jest package.json { "jest": { "preset": "ts-jest" } } Se você planeja , também precisa ajustar sua configuração: usar o caminho absoluto em um projeto { "jest": { "preset": "ts-jest", "moduleDirectories": [ "node_modules", "<rootDir>" ] } } Esta configuração permite que você execute testes com um simples comando... jest Portanto, configure seu script em para ser: de teste package.json { "scripts": { "test": "jest" } } Em seguida, execute seus testes a qualquer momento com o comando ou . npm test npm run test Eu também recomendo que você instale se você for um usuário - ela permite que você / os testes/suítes desejados com apenas um clique. No é um recurso integrado. uma extensão Jest Runner do Visual Studio Code execute depure WebStorm, Tipos personalizados O principal recurso que introduz no teste da API REST é... , claro! o TypeScript tipos Você pode declarar como deve ser o corpo de sua solicitação e resposta, ou seja, , e etc nomes chave tipos de valor Vamos pegar um servidor como exemplo - podemos anotar sua carga útil do corpo da solicitação para endpoint como um tipo: Paysis /auth export type AuthRequestBody = { login: string password: string } E o mesmo para o corpo da resposta - qual servidor deve enviar para nossa solicitação: export type AuthResponseBody = { token?: string message?: string } Como haveria uma carga útil diferente para cenários de sucesso/falha - você pode marcar as chaves como "opcionais" por meio do " personagem. ?" Uma vez feito - você pode usar esses tipos para compor solicitações e verificações em seus testes... Solicitar No , você pode dizer qual corpo está enviando por meio da configuração de solicitação: Axios const payload: AxiosRequestConfig<AuthRequestBody> = { method: 'post', url: '/auth', data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, } em significa exatamente isso ☝️ AuthRequestBody AxiosRequestConfig<AuthRequestBody> Isso significa que você será forçado a usar a carga que corresponde ao tipo fornecido no objeto . Se você esquecer de definir alguns campos obrigatórios ou definir alguns excessivos, verá um erro. AuthRequestBody data Resposta A mesma coisa pode ser feita sobre a resposta também: const response: AxiosResponse<AuthResponseBody> = await client.request(payload) Ele adicionará preenchimento automático ao objeto , para que você possa acessar os campos ou . response.data response.data.token response.data.message Ferramentas avançadas Além das coisas simples acima, também é possível . Ele permite que você não verifique todas as chaves em um corpo de resposta para ver se ele corresponde ao esquema, mas . gerar um esquema JSON de seus tipos personalizados verifique toda a carga útil Então a ideia é: Gere um de tipos personalizados. esquema JSON Use um correspondente personalizado para validar o corpo da resposta. toMatchSchema Coisas muito legais, mas lembre-se de que seus testes podem ficar instáveis após essas alterações - isso acontece quando alguns campos adicionais aparecem, então você precisa atualizar o esquema regularmente. Conclusão A configuração pode ser complicada, especialmente se for sua primeira vez, mas vale a pena! do TypeScript Se você cobrir seus dados de entrada e saída com tipos - não há como cometer um erro de digitação ou algum outro erro de sintaxe ao analisar esses objetos. Ele evita erros simples e permite que você veja a estrutura de suas solicitações diretamente no seu código, para que você não precise abrir nenhuma (como ) e procurar a solicitação necessária para ver qual corpo ela solicita/responde com. coleção HTTP Postman Deixe-me saber sobre sua experiência e o que você pensa sobre isso.