2017-04-23 2 views
0

J'ai une configuration api simulée avec nœud/expressNock, localhost, port et Redux observables

http://localhost:8080/api/lyric/

J'utilise Redux observable pour aller chercher le JSON:

const fetchLyricEpic = action$ => 
action$.ofType(FETCH_LYRIC) 
    .mergeMap(action => 
    ajax.getJSON('/api/lyric') 
     .map(response => fetchLyricSuccess(response)) 
     .catch(error => Observable.of(fetchLyricFail(error))) 
) 

Le problème est, quand je teste, je reçois une erreur de api au lieu de 200 à l'aide nock:

beforeEach(() => { 
    nock.disableNetConnect() 
    nock.enableNetConnect('127.0.0.1:3000/') 
}) 

afterEach(() => { 
    nock.cleanAll() 
    nock.enableNetConnect() 
    epicMiddleware.replaceEpic(rootEpic) 
}) 

test('it creates FETCH_SUCCESS when fetching the lyric has been done',() => { 
    const payload = { 
    status: 200, 
    response: { 
     'lyric': "Lyric" 
    } 
    } 
    nock('127.0.0.1:3000/') 
    .get('/api/lyric') 
    .reply(200, payload, {'Content-Type': 'application/json'}) 

J'essaie de suivre ce que j'ai lu dans les docs nock et aussi dans la liste des problèmes, cependant, mon appel apk nock continue d'échouer.

Expected value to equal: 
     [{"type": "FETCH_LYRIC"}, {"payload": {"lyric": "Lyric"}, "type": "FETCH_LYRIC_SUCCESS"}] 
    Received: 
     [{"type": "FETCH_LYRIC"}, {"payload": {}, "type": "FETCH_LYRIC_ERROR"}] 

je recevrais FETCH_LYRIC_SUCCESS au lieu que je vois:

[ { type: 'FETCH_LYRIC' }, 
     { type: 'FETCH_LYRIC_ERROR', 
      payload: 
      SyntaxError 
       at XMLHttpRequest.open (<user>/node_modules/jsdom/lib/jsdom/living/xmlhttprequest.js:486:15) 
       at XMLHttpRequest.tryCatcher (<user>/node_modules/rxjs/util/tryCatch.js:6:31) 
       at AjaxSubscriber.Object.<anonymous>.AjaxSubscriber.send (<user>/node_modules/rxjs/observable/dom/AjaxObservable.js:208:56) 
       at new AjaxSubscriber (<user>/node_modules/rxjs/observable/dom/AjaxObservable.js:180:14) 
       at AjaxObservable.Object.<anonymous>.AjaxObservable._subscribe (<user>/node_modules/rxjs/observable/dom/AjaxObservable.js:115:16) 
       at AjaxObservable.Object.<anonymous>.Observable._trySubscribe (<user>/node_modules/rxjs/Observable.js:57:25) 
       at AjaxObservable.Object.<anonymous>.Observable.subscribe (<user>/node_modules/rxjs/Observable.js:45:27) 
       at MapOperator.Object.<anonymous>.MapOperator.call (<user>/node_modules/rxjs/operator/map.js:54:23) 
       at Observable.Object.<anonymous>.Observable.subscribe (<user>/node_modules/rxjs/Observable.js:42:22) 
       at MapOperator.Object.<anonymous>.MapOperator.call (<user>/node_modules/rxjs/operator/map.js:54:23) } ] 
+0

Quelle est l'erreur? – jayphelps

+0

@jayphelps mis à jour ci-dessus ^^ ... – redconservatory

Répondre

1

Depuis le message d'erreur, il semble identique aux problèmes décrits ici: https://github.com/tmpvar/jsdom/issues/1706

Je travaille sur un projet qui utilise mocha avec jsdom et enzyme pour exécuter nos tests d'intégration dans un dom virtuel dans Node. En ce moment j'utilise le noeud 6.9.2, et tout fonctionne bien. J'ai essayé d'utiliser 7.4.0, en cours d'exécution mais les tests que j'ai eu l'erreur

(trace de la pile presque identique)

En effet, si elle est la même, certains ont signalé ce avait un problème avec nœud 7.4.0 et que la mise à niveau vers la version 7.5.0 ou ultérieure a résolu le problème.

+0

Cela ... partiellement fixé? Maintenant, je reçois une autre erreur. Va probablement marquer cela comme ok. – redconservatory

+0

Génial! Content que ça a marché. – jayphelps

+0

@redconservatory si cela a résolu ce problème particulier, considérez le marquer comme accepté :) merci! – jayphelps