Có đang chờ khối python không?
Trong triển khai ở trên, chúng tôi hy vọng mô-đun Show
Bây giờ hãy tưởng tượng một triển khai của lời yêu cầu. js
Bởi vì chúng tôi không muốn truy cập mạng trong thử nghiệm của mình, chúng tôi sẽ tạo một bản mô phỏng thủ công cho mô-đun 2 (thư mục phân biệt chữ hoa chữ thường, 3 sẽ không hoạt động). Nó có thể trông giống như thế này__mocks__/yêu cầu. js
Bây giờ, hãy viết một bài kiểm tra cho chức năng không đồng bộ của chúng tôi __tests__/kiểm tra người dùng. js
Chúng tôi gọi 4 để yêu cầu Jest sử dụng bản mô phỏng thủ công của chúng tôi. 5 hy vọng giá trị trả lại là một Lời hứa sẽ được giải quyết. Bạn có thể xâu chuỗi bao nhiêu Lời hứa tùy thích và gọi 6 bất cứ lúc nào, miễn là bạn trả lại một Lời hứa vào cuốiconst http = require('http');export default function request(url) { return new Promise(resolve => { // This is an example of an http request, for example to fetch // user data from an API. // This module is being mocked in __mocks__/request.js http.get({path: url}, response => { let data = ''; response.on('data', _data => (data += _data)); response.on('end', () => resolve(data)); }); });}7Có một cách ít dài dòng hơn bằng cách sử dụng 8 để mở khóa giá trị của một lời hứa đã thực hiện cùng với bất kỳ công cụ đối sánh nào khác. Nếu lời hứa bị từ chối, xác nhận sẽ thất bại
const http = require('http');export default function request(url) { return new Promise(resolve => { // This is an example of an http request, for example to fetch // user data from an API. // This module is being mocked in __mocks__/request.js http.get({path: url}, response => { let data = ''; response.on('data', _data => (data += _data)); response.on('end', () => resolve(data)); }); });}9/______3_______0Cũng có thể kiểm tra viết sử dụng cú pháp 9/ 0. Đây là cách bạn viết các ví dụ tương tự từ trước
Để bật async/await trong dự án của bạn, hãy cài đặt 3 và bật tính năng này trong tệp 4 của bạnxử lý lỗiLỗi có thể được xử lý bằng phương pháp 5. Đảm bảo thêm 6 để xác minh rằng một số xác nhận nhất định được gọi. Mặt khác, một lời hứa được thực hiện sẽ không thất bại trong bài kiểm tra
const users = { 4: {name: 'Mark'}, 5: {name: 'Paul'},};export default function request(url) { return new Promise((resolve, reject) => { const userID = parseInt(url.substr('/users/'.length), 10); process.nextTick(() => users[userID] ? resolve(users[userID]) : reject({ error: `User with ${userID} not found.`, }), ); });}7Trình trợ giúp ______3_______7 hoạt động giống như trình trợ giúp ______0_______7. Nếu lời hứa được thực hiện, bài kiểm tra sẽ tự động thất bại. 0 không bắt buộc nhưng nên xác minh rằng một số lượng nhất định được gọi trong quá trình kiểm tra. Mặt khác, rất dễ quên 1/ 0 các khẳng định của 7 |