Specify response.request.responseURL in moxios
我目前正在尝试编写一些功能,要求axios处理响应时需要设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | it('resets list selection if input contents were replaced', (done) => { component.currently_selected_list_value = 10; component.last_called_url = 'henkiehoutman'; let input = domElt.querySelector('input'); ReactTestUtils.Simulate.change(input); moxios.wait(() => { let request = moxios.requests.mostRecent(); request.respondWith({ status: 200, response: [{ customer_info_customers: ['', '', '', '', ''], domain_info_customers: {}, }], request: {responseURL: 'banaan'} }).then(() => { // The contents were replaced, so it's best to forget whatever our selection was. expect(component.currently_selected_list_value).toEqual(-1); done(); }); }); }); |
这是我的实际应用程序的外观:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | onChange (event) { return axios.get( this.props.ApiUrl + encodeURIComponent(event.target.value) ).then( (response) => { let response_url = response.request.responseURL; // This is the value I want to set manually. if(this.shouldHandleResponse(response_url)){ this.last_called_url = response_url; let data = response.data; this.setState({results: data, dropdown: data.length > 0}); if ( this.currently_selected_list_value > max_index) { this.currently_selected_list_value = max_index; } } } ); }, |
但是,当我记录该值是什么时,它只会显示
LOG: Request{resolve: function (a) { ... }, reject: function (a) { ... }, config: Object{adapter: function mockAdapter(config) { ... }, transformRequest: Object{0: ...}, transformResponse: Object{0: ...}, timeout: 0, xsrfCookieName: 'XSRF-TOKEN', xsrfHeaderName: 'X-XSRF-TOKEN', maxContentLength: -1, validateStatus: function validateStatus(status) { ... }, headers: Object{Accept: ..., X-CSRFToken: ...}, method: 'get', url: 'my_api_url/', data: undefined}, headers: Object{Accept: 'application/json, text/plain, /', X-CSRFToken: 'my_csrf_token'}, url: 'my_api_url/', timeout: 0, withCredentials: false, responseType: undefined}
这破坏了我的应用程序,因为应该始终定义
所以; 如何在Moxios中向此请求添加
事实证明,由于我将其链接到
我还看到
这就是我最终追求的目标:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | it('resets list selection if input contents were replaced', (done) => { component.currently_selected_list_value = 10; component.last_called_url = 'henkiehoutman'; let input = domElt.querySelector('input'); ReactTestUtils.Simulate.change(input); moxios.wait(() => { let request = moxios.requests.mostRecent(); let promise = request.respondWith({ status: 200, response: [{ customer_info_customers: ['', '', '', '', ''], domain_info_customers: {}, }], }); request.responseURL = 'banaan'; promise.then(() => { // The contents were replaced, so it's best to forget whatever our selection was. expect(component.currently_selected_list_value).toEqual(-1); done(); }); }); }); |