Xin chào tất cả mọi người! Tôi đã được truyền cảm hứng để viết bài báo này bởi các sinh viên và người được cố vấn của tôi. Tôi thường khuyên họ nên học ngay khi họ cảm thấy thoải mái với quy trình tự động hóa thử nghiệm trên . Hãy xem những đặc điểm của việc sử dụng TypeScript trong khung tự động hóa thử nghiệm của bạn về mặt thử nghiệm API REST là gì… TypeScript JavaScript Bạn có thể tìm thấy mã đầy đủ của dự án thử nghiệm . tại đây bản đánh máy Chúng ta đừng đi quá sâu vào là gì và nó khác với như thế nào và nêu rõ điều quan trọng - . Nhưng, cũng khá quan trọng - nó phụ thuộc trực tiếp vào (nền tảng ). TypeScript JavaScript đó là ngữ lập trình ngôn JavaScript Node.js được trình bày dưới dạng gói , vì vậy tôi xem nó giống như với một số tính năng thú vị. TypeScript Node.js JavaScript Để tìm hiểu thêm về chính ngôn ngữ này và những gì nó cung cấp - vui lòng truy cập trong khi chúng tôi sẽ nói về các tính năng của nó về tự động hóa thử nghiệm… trang web chính thức Thiết lập dự án Hãy xem qua quy trình tạo dự án tự động hóa thử nghiệm trên : TypeScript Tạo một dự án Node.js. npm init -y Cài đặt gói . TypeScript npm i typescript Tạo cấu hình mặc định cho dự án - . TypeScript tsconfig.json npx tsc --init Lệnh trên sẽ tạo một tệp cấu hình mặc định, nhưng tôi khuyên bạn nên rút ngắn nó thành một tệp như : sau { "compilerOptions": { "baseUrl": "./", "module": "esnext", "target": "esnext", "sourceMap": false, "moduleResolution": "node", "allowJs": true, "skipLibCheck": true, "resolveJsonModule": true, "allowSyntheticDefaultImports": true, "paths": { "*": ["./*"] } } } Cấu hình này chứa mức tối thiểu bắt buộc: sử dụng phiên bản mới nhất, EcmaScript cung cấp các bản nhập JSON, cho phép bạn sử dụng đường dẫn tuyệt đối trong nhập khẩu. Bạn có thể mở rộng cấu hình của mình bằng . tài liệu chính thức Lựa chọn công cụ Bạn có thể sử dụng bất kỳ công cụ nào mà hệ sinh thái cung cấp, nhưng theo kinh nghiệm của tôi - hầu hết đều chọn vì một số lý do chính đáng: Node.js các kỹ sư làm việc với TypeScript Jest hỗ trợ cộng đồng tuyệt vời (cập nhật, câu trả lời, tài liệu, mã ví dụ), cấu hình linh hoạt. Trước đây, tôi rất vui khi sử dụng + để thiết lập cốt lõi của dự án, nhưng bây giờ tôi cũng gắn bó với , vì nó chứa cả thư viện xác nhận và người chạy thử nghiệm. Mocha Chai Jest dường như là ứng dụng khách HTTP phổ biến nhất, vì vậy tôi khuyên bạn cũng nên chọn đây. Axios Không thể nói rằng bạn buộc phải sử dụng điều này cho thiết lập của mình, nhưng tôi đang nói rằng đó là điều bình thường khi bạn xem qua các dự án. Bây giờ, chỉ cần cài đặt các gói này dưới dạng phụ thuộc: npm i jest axios Loại bộ sưu tập Một số gói (như ) chứa các loại bên trong, nhưng thì không. Ngoài ra, yêu cầu gói cùng với để hoạt động bình thường - gói đầu tiên kích hoạt các tính năng và gói thứ hai cho phép bạn sử dụng . Axios TypeScript Jest & Mocha Jest ts-jest @types/jest của TypeScript IntelliSense Vì vậy, hãy ghi nhớ - nếu bạn không có tính năng tự động hoàn thành khi bạn đang cố gắng sử dụng một số gói - thì có thể bạn đang thiếu các khai báo kiểu. Hãy cài đặt cả các phần mở rộng (gói) liên quan đến : TypeScript npm i ts-jest @types/jest Cấu hình yêu cầu cài đặt trước cấu hình , vì vậy bạn phải khai báo nó trong tệp cấu hình (hoặc ): Jest ts-jest package.json { "jest": { "preset": "ts-jest" } } Nếu bạn dự định , bạn cũng cần điều chỉnh cấu hình của mình: sử dụng đường dẫn tuyệt đối trong một dự án { "jest": { "preset": "ts-jest", "moduleDirectories": [ "node_modules", "<rootDir>" ] } } Cấu hình này cho phép bạn chạy thử nghiệm bằng một lệnh đơn giản... jest Vì vậy, hãy định cấu hình tập lệnh của bạn trong thành: thử nghiệm pack.json { "scripts": { "test": "jest" } } Và sau đó chạy thử nghiệm của bạn bất cứ lúc nào với lệnh hoặc . npm test npm run test Tôi cũng khuyên bạn nên cài đặt nếu bạn là người dùng - tiện ích này cho phép bạn / các thử nghiệm/bộ phần mềm mong muốn chỉ bằng một cú nhấp chuột. Trong đó là một tính năng tích hợp sẵn. tiện ích mở rộng Jest Runner Visual Studio Code chạy gỡ lỗi WebStorm, các loại tùy chỉnh Tính năng chính mà đưa vào thử nghiệm API REST là... , tất nhiên rồi! TypeScript các loại Bạn có thể khai báo nội dung yêu cầu và phản hồi của bạn sẽ như thế nào, tức là, , và vân vân. tên chính loại giá trị Hãy lấy một máy chủ làm ví dụ - chúng ta có thể ghi tải trọng nội dung yêu cầu của nó cho điểm cuối dưới dạng một loại: Paysis /auth export type AuthRequestBody = { login: string password: string } Và tương tự đối với nội dung phản hồi - máy chủ nào sẽ gửi yêu cầu của chúng tôi: export type AuthResponseBody = { token?: string message?: string } Vì sẽ có một tải trọng khác cho các tình huống thành công/thất bại - bạn có thể đánh dấu các khóa là "tùy chọn" thông qua nút “ tính cách. ?” Sau khi hoàn tất - bạn có thể sử dụng các loại này để soạn yêu cầu và xác minh trong các thử nghiệm của mình... Lời yêu cầu Trong , bạn có thể nói nội dung bạn đang gửi thông qua cấu hình yêu cầu: Axios const payload: AxiosRequestConfig<AuthRequestBody> = { method: 'post', url: '/auth', data: { login: process.env.USERNAME, password: process.env.PASSWORD, }, } trong chính xác có nghĩa như vậy ☝️ AuthRequestBody AxiosRequestConfig<AuthRequestBody> Điều đó có nghĩa là bạn sẽ buộc phải sử dụng tải trọng phù hợp với loại được cung cấp trong đối tượng . Nếu bạn quên đặt một số trường bắt buộc hoặc đặt một số trường quá mức - bạn sẽ thấy lỗi. AuthRequestBody data Phản ứng Điều tương tự cũng có thể được thực hiện về phản hồi: const response: AxiosResponse<AuthResponseBody> = await client.request(payload) Nó sẽ thêm tính năng tự động điền vào đối tượng , vì vậy, bạn có thể tiếp cận các trường hoặc . response.data response.data.token response.data.message Công cụ nâng cao Ngoài những nội dung đơn giản ở trên, bạn cũng có thể . Nó cho phép bạn không kiểm tra từng khóa đơn lẻ trong nội dung phản hồi để xem liệu nó có khớp với lược đồ hay không mà . tạo lược đồ JSON từ các loại tùy chỉnh của mình kiểm tra toàn bộ tải trọng Vì vậy, ý tưởng là: Tạo lược từ các loại tùy chỉnh. đồ JSON Sử dụng công cụ so khớp tùy chỉnh để xác thực nội dung phản hồi. toMatchSchema Nội dung khá thú vị, nhưng hãy nhớ rằng các thử nghiệm của bạn có thể trở nên không ổn định sau những thay đổi này - điều này xảy ra khi một số trường bổ sung xuất hiện, vì vậy bạn cần cập nhật giản đồ thường xuyên. Phần kết luận Thiết lập có thể phức tạp, đặc biệt nếu đây là lần đầu tiên của bạn, nhưng nó đáng giá! TypeScript Nếu bạn bao gồm dữ liệu đầu vào và đầu ra của mình bằng các loại - không có cách nào bạn mắc lỗi đánh máy hoặc một số lỗi cú pháp khác khi bạn phân tích cú pháp các đối tượng này. Nó giúp bạn tránh khỏi những lỗi đơn giản và cho phép bạn xem cấu trúc của các yêu cầu ngay trong mã của mình, vì vậy bạn không phải mở bất kỳ nào (như ) và tìm kiếm yêu cầu bạn cần để xem nội dung yêu cầu/phản hồi với. bộ sưu tập HTTP Postman Hãy cho tôi biết về kinh nghiệm của bạn và những gì bạn nghĩ về nó.