2017-06-01 4 views
4

ich eine axios Instanz erstellt ...Mock axios mit axios-Mock-Adapter erhalten undefined bzw.

// api/index.js 

const api = axios.create({ 
    baseURL: '/api/', 
    timeout: 2500, 
    headers: { Accept: 'application/json' }, 
}); 
export default api; 

Und severals Module, die es verwenden ..

// api/versions.js 

import api from './api'; 

export function getVersions() { 
    return api.get('/versions'); 
} 

Ich versuche, wie zu testen ..

// Test 
import { getVersions } from './api/versions'; 

const versions= [{ id: 1, desc: 'v1' }, { id: 2, desc: 'v2' }]; 
mockAdapter.onGet('/versions').reply(200, versions); 

getVersions.then((resp) => { // resp is UNDEFINED? 
    expect(resp.data).toEqual(versions); 
    done(); 
}); 

Warum resp ist nicht definiert?

Antwort

1

Zwei Dinge versuchen:

  1. Vielleicht Sie bereits in Ihrem Code an anderer Stelle haben, aber sicher sein mockAdaptor einzurichten:

import axios from 'axios'; 
 
import MockAdapter from 'axios-mock-adapter'; 
 

 
const mockAdapter = new MockAdapter(axios);

  1. Ich habe keine Möglichkeit gefunden, den Mock-Adapter zum Funktionieren zu bringen, wenn die Funktion tesi ist ng verwendet 'axios.create', um eine neue Axios-Instanz einzurichten. Versuchen Sie, etwas entlang der Linien von dieser Stelle:

// api/index.js 
 

 
const api = { 
 
    get(path) { 
 
    return axios.get('/api' + path) 
 
    .then((response) => { 
 
     return response.data; 
 
    }); 
 
    } 
 
} 
 
export default api;

+0

# 1. Ich habe das schon eingerichtet. # 2. Verwenden Sie einfach 'new MockAdapter (axiosInstanceHere);' keine Notwendigkeit, das zu tun. – ridermansb

+0

mit '' 'neuen MockAdapter (axios.create ({timeout: 5000}))' '' funktioniert nicht. – sjt003

+0

Ich habe das gleiche Problem. Wenn die Verbindung mit 'axios.create' erstellt wird, wird der Mock-Adapter nicht definiert. – DaKaZ

0

nach James M. Rat, ich meine api/index.js aktualisiert, nicht die axios.create mit ...

api/index.js

import http from 'axios' 

export default { 

    fetchShoppingLists:() => { 
    console.log('API FETCH SHOPPINGLISTS') 
    return http 
     .get('http://localhost:3000/shoppinglists') 
     .then(response => { 
     return response 
     }) 
     .catch(error => { 
     console.log('FETCH ERROR: ', error) 
     }) 
    } 
}