2016-08-08 36 views
5

tôi đang cố gắng thử nghiệm apiwrapper trong ứng dụng dựa trên phản ứng gốc bằng cách sử dụng tính năng kiểm tra tích hợp (jest). Khi tôi chạy nó trong trình giả lập iOs tất cả mọi thứ chạy tốt tuy nhiên nó sẽ không chạy thử nghiệm jest của tôi một cách chính xác - tôi luôn luôn nhận được:XMLHttpRequest không được xác định khi thử nghiệm ứng dụng gốc phản ứng với jest

ReferenceError: XMLHttpRequest is not defined 

khi tôi cố gắng để chạy thử nghiệm sử dụng wrapper api của tôi, Eg .:

it('Login successful with correct data',() => { 
    let api = Api.getInstance(); 
    return api.login("test", "testpass") 
     .then(result => expect(result).toEqual('login_successful')); 
}); 

lớp api tôi đang cố gắng kiểm tra ở đây không sử dụng tìm nạp api (không phải vanilla xhr). Tôi cho rằng cái gì đó của nó liên quan đến jest cố gắng để thử một cái gì đó nhưng chưa tìm thấy một cách để làm cho nó hoạt động được nêu ra.

Xin cảm ơn trước.

+0

trùng lặp có thể xảy ra của [XHR thử nghiệm trong jest] (http://stackoverflow.com/questions/28584773/xhr-testing-in-jest) –

+0

Tôi đang sử dụng Truy xuất không XHR để giải pháp được cung cấp không thực sự giải quyết vấn đề. Mặc dù tôi thực sự muốn thử nghiệm tích hợp. Chính xác nhạo báng api lấy cũng sẽ được chấp nhận ... tuy nhiên tôi đã tìm thấy không có cách nào để xác định chính xác những gì các mô hình nên trả lại cho đầu vào để lấy ... – dburgmann

Trả lời

2

Tôi gặp sự cố tương tự với lokka sử dụng XMLHttpRequest. Tôi đã tạo ra một mô hình cho lokka, mà lớp api wrapper của tôi phụ thuộc vào. Bạn có thể thử chế nhạo api wrapper của bạn.

Đây là hình thức của tôi lokka hiện tại. Tôi sẽ thêm nhiều hơn vào nó khi tôi bắt đầu kiểm tra xử lý lỗi.

export default class { 
    query() { 
    return new Promise(resolve => { 
     resolve(200); 
    }); 
    } 
} 

Bạn có thể có thể để chế nhạo wrapper api của bạn với một cái gì đó tương tự:

export default class Api {  
    getInstance() { 
    \\ However you implemented getInstance  
    } 

    login(user, password) { 
    return new Promise(resolve => { 
     resolve('login_successful'); 
    }); 
    } 
} 
0

Trong trường hợp của tôi, tôi không kiểm tra mã tìm kiếm nhưng chỉ nhập khẩu nó ở đâu đó trong con đường mã của tôi, vì vậy Tôi quyết định chỉ thử nó ở cấp độ toàn cầu trong một tập tin setup.js (nạp bằng cách sử dụng --require lúc chạy thử nghiệm). Các công trình sau đây cho tôi:

// needed in react-instantsearch 
class XMLHttpRequest {} 
global.XMLHttpRequest = XMLHttpRequest; 
Các vấn đề liên quan