¡Hola a todos! Mis alumnos y aprendices me inspiraron para escribir este artículo. A menudo recomiendo que aprendan tan pronto como se sientan cómodos con el proceso de automatización de pruebas en . Veamos cuáles son las características de usar TypeScript en su marco de automatización de pruebas en términos de pruebas de API REST… TypeScript JavaScript Puede encontrar el código completo de un proyecto de prueba . aquí Mecanografiado No profundicemos demasiado en qué es y en qué se diferencia de y digamos lo importante: . Pero también es muy importante: depende directamente de (plataforma ). TypeScript JavaScript es lenguaje de programación el JavaScript Node.js se presenta como un paquete , por lo que veo esto como con algunas características interesantes. TypeScript de Node.js JavaScript Para obtener más información sobre el lenguaje en sí y lo que tiene para ofrecer, visite mientras hablamos sobre sus características en términos de automatización de pruebas... el sitio web oficial configuración del proyecto Repasemos el proceso de creación del proyecto de automatización de pruebas en : TypeScript Cree un proyecto de Node.js. npm init -y Instale el paquete . TypeScript npm i typescript Genere una configuración predeterminada para el proyecto: . de TypeScript tsconfig.json npx tsc --init El comando anterior generará un archivo de configuración predeterminado, pero recomiendo acortarlo mucho a algo como : esto { "compilerOptions": { "baseUrl": "./", "module": "esnext", "target": "esnext", "sourceMap": false, "moduleResolution": "node", "allowJs": true, "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "paths": { "*": ["./*"] } } } Esta configuración contiene el mínimo requerido: utiliza la última versión , de EcmaScript hace que las importaciones JSON estén disponibles, le permite usar la ruta absoluta en las importaciones. Puede ampliar su configuración utilizando . la documentación oficial Selección de herramientas Puede usar cualquier herramienta que el ecosistema tenga para ofrecer, pero según mi experiencia, la mayoría de los eligen por un par de buenas razones: Node.js ingenieros que trabajan con TypeScript Jest gran apoyo de la comunidad (actualizaciones, respuestas, documentos, ejemplos de código), configuración flexible. Anteriormente, me divertía usando + para configurar el núcleo del proyecto, pero ahora también me quedo con , ya que contiene un ejecutor de pruebas y una biblioteca de afirmaciones. Mocha Chai Jest parece ser el cliente HTTP más popular, por lo que sugiero que esta también sea su elección. Axios No puedo decir que esté obligado a usar esto para su configuración, pero digo que es lo habitual cuando revisa los proyectos. Ahora, simplemente instale estos paquetes como dependencias: npm i jest axios Colecciones de tipos Algunos paquetes (como ) contienen tipos en su interior, pero no. Además, requiere un paquete junto con para funcionar correctamente: el primero habilita las funciones y el segundo le permite usar . Axios de TypeScript Jest y Mocha Jest ts-jest @types/jest de TypeScript IntelliSense Así que tenga en cuenta que si no tiene la función de autocompletar cuando intenta usar algunos de los paquetes, probablemente le falten declaraciones de tipo. Instalemos también las extensiones (paquetes) relacionadas con : TypeScript npm i ts-jest @types/jest Configuración requiere un ajuste preestablecido de configuración , por lo que debe declararlo en su archivo de configuración (o ): Jest ts-jest paquete.json { "jest": { "preset": "ts-jest" } } Si planea , también deberá ajustar su configuración: usar una ruta absoluta dentro de un proyecto { "jest": { "preset": "ts-jest", "moduleDirectories": [ "node_modules", "<rootDir>" ] } } Esta configuración le permite ejecutar pruebas con un comando simple... jest Entonces, configure su script en para que sea: de prueba package.json { "scripts": { "test": "jest" } } Y luego ejecute sus pruebas en cualquier momento con el comando o . npm test npm run test También le recomiendo que instale si es usuario ; le permite / las pruebas/suites deseadas con solo un clic. En es una función integrada. una extensión de Jest Runner de Visual Studio Code ejecutar depurar WebStorm, Tipos personalizados La característica principal que introduce en las pruebas de la API REST es... , ¡por supuesto! TypeScript tipos Puede declarar cómo debería verse el cuerpo de su solicitud y respuesta, es decir, , y etc. nombres clave tipos de valores Tomemos un servidor como ejemplo: podemos escribir la carga útil del cuerpo de la solicitud para el punto final como un tipo: Paysis /auth export type AuthRequestBody = { login: string password: string } Y lo mismo para el cuerpo de respuesta: qué servidor debe enviar a nuestra solicitud: export type AuthResponseBody = { token?: string message?: string } Dado que habría una carga útil diferente para los escenarios de éxito/fracaso, puede marcar las claves como "opcionales" a través de " personaje. ?" Una vez hecho esto, puede usar estos tipos para redactar solicitudes y verificaciones en sus pruebas... Pedido En , puede decir qué cuerpo está enviando a través de la configuración de solicitud: Axios const payload: AxiosRequestConfig<AuthRequestBody> = { method: 'post', url: '/auth', data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, } en significa exactamente eso ☝️ AuthRequestBody AxiosRequestConfig<AuthRequestBody> Significa que se verá obligado a usar la carga útil que coincida con el tipo proporcionado en el objeto . Si olvida establecer algunos campos obligatorios o establece algunos excesivos, verá un error. AuthRequestBody data Respuesta Se puede hacer lo mismo con respecto a la respuesta: const response: AxiosResponse<AuthResponseBody> = await client.request(payload) Agregará autocompletar al objeto , por lo que podrá acceder a los campos de o . response.data response.data.token response.data.message Herramientas avanzadas Además de las cosas simples anteriores, también es posible . No le permite verificar cada clave individual en un cuerpo de respuesta para ver si coincide con el esquema, sino . generar un esquema JSON a partir de sus tipos personalizados verificar toda la carga útil Entonces la idea es: Genere un a partir de tipos personalizados. esquema JSON Use un comparador personalizado para validar el cuerpo de la respuesta. para MatchSchema Cosas bastante interesantes, pero tenga en cuenta que sus pruebas pueden volverse inestables después de estos cambios; sucede cuando aparecen algunos campos adicionales, por lo que deberá actualizar el esquema regularmente. Conclusión La configuración puede ser complicada, especialmente si es la primera vez, ¡pero vale la pena! de TypeScript Si cubre sus datos de entrada y salida con tipos, no hay forma de que cometa un error tipográfico o algún otro error de sintaxis cuando analice estos objetos. Lo salva de errores simples y le permite ver la estructura de sus solicitudes directamente en su código, por lo que no tiene que abrir ninguna (como ) y buscar la solicitud que necesita para ver qué cuerpo solicita/responde con. colección HTTP Postman Cuéntame sobre tu experiencia y lo que piensas al respecto.