2016-10-19 19 views
6

Im jest Jest, aby przetestować interfejs REST API i otrzymuję TypeError: Odpowiedź żądania sieci nie powiodła się, gdy wysyłam żądanie pobierania. Wszystkie połączenia z interfejsem API REST działają na aplikacji i kończą się niepowodzeniem wyłącznie w testach Jest.Jest - TypeError: Żądanie sieci nie powiodło się dla pobrania

Czy są jakieś znane niezgodności między pobieraniem a używaniem? Na przykład ten prosty test kończy się wykonaniem instrukcji haczyk:

it('should find a result via fetch',() => { 
    fetch('http://www.google.com').then(() => console.log('Success')).catch((err) => console.log('Error!!!!' + err)); 
}); 

Wynik otrzymał to: Błąd !!!! TypeError: Żądanie sieciowe nie powiodło

+0

www.google.com URL jest rzeczywiście zły przykład - ponieważ wymaga serię nagłówków, które zostaną nałożone, a tym samym nie zawsze chyba nagłówki są obecne . Ale mój punkt końcowy interfejsu API nie wymaga żadnego i nadal się nie udaje –

+0

Sprawdź https://stackoverflow.com/questions/44450278/fetch-doesnt-work-in-jest-and-return-typeerror-network-request-failed/47243968# 47243968 – Ron

Odpowiedz

0

Ok stałam się to do pracy za pomocą asynchronicznie czekają, ale ja nadal nie rozumiem, dlaczego to nie działa bez async blokowych Więc teraz moja próba działa z tym kodem:

it('should find a result via REST', async() => { 
     const data = await CqApi.personSearch('XYZ'); 

     expect(....).toBeDefined(); 
    }); 
4

trzeba zwrócić Promise że fetch powroty:

it('should find a result via fetch',() => { 
    return fetch('http://www.google.com') 
     .then(() => console.log('Success')) 
     .catch((err) => console.log('Error!!!!' + err)); 
}); 

można przeczytać więcej na temat testów żartem docs asynchroniczny tutaj: https://facebook.github.io/jest/docs/tutorial-async.html

Dodatkowo, korzystając żart w create-react-app użyje WHATWG-fetch PolyFill poprzez jsdom. Można wymusić użycie isomorphic-fetch importując go bezpośrednio:

import fetch from 'isomorphic-fetch'; 
+1

Witam, po przełączeniu na "pobieranie izomorficzne" testy narzekają, że "obsługiwany jest tylko adres URL bezwzględny". Czy jest jakiś sposób obejścia tego niż zmiana na bezwzględne adresy URL? –

Powiązane problemy