2016-03-17 15 views
15

Trong phản ứng gốc chúng tôi sử dụng fetch để thực hiện yêu cầu mạng, tuy nhiên fetch không phải là mô-đun bắt buộc rõ ràng, vì vậy dường như không thể giả lập trong Jest .Cách thực hiện cuộc gọi API thử nghiệm đơn vị với tìm nạp được giả lập() trong Jest

Thậm chí cố gắng để gọi một phương thức trong đó sử dụng fetch trong một thử nghiệm sẽ cho kết quả:

ReferenceError: fetch is not defined.

Có cách nào để kiểm tra các yêu cầu API như vậy trong phản ứng gốc với Jest không?

Trả lời

15

Bên trong trường hợp thử nghiệm của bạn, bạn có thể thử bất kỳ chức năng bạn muốn bằng cách sử dụng mocks jest của:

fetch = jest.fn(() => new Promise(resolve => resolve())); 

Cách tiếp cận này chỉ hoạt động cho các trường hợp thử nghiệm hứa hẹn dựa trên (xem pit trong tài liệu jest).

Theo như fetch là chức năng không đồng bộ, bạn cần chạy tất cả các thử nghiệm của mình bằng cách sử dụng pit (đọc thêm về các kiểm tra không đồng bộ here).

+0

Cảm ơn bạn rất nhiều! –

+1

FYI bây giờ bạn có thể sử dụng 'it' bằng cách trả lại Lời hứa. –

4

Thay vì lăn mô hình của riêng bạn, bạn có thể sử dụng gói jest-fetch-mock npm để ghi đè đối tượng tìm nạp toàn cục. Gói đó cho phép bạn thiết lập các phản hồi giả và xác minh các yêu cầu đã gửi. Xem liên kết đó để biết các ví dụ sử dụng rộng rãi.

+5

Cách khác, mô hình của bạn không nhất thiết phải là Jest. [fetch-mock] (http://www.wheresrhys.co.uk/fetch-mock/) có API rất đẹp và đầy đủ tính năng hơn jest-fetch-mock. – ArthurDenture

Các vấn đề liên quan