2016-08-08 15 views
5

Próbuję przetestować apiwrapper w aplikacji opartej na języku natywnym w reakcji na podstawie jest (testowanie integracyjne). gdy uruchomię go w symulatorze iOS wszystko działa w porządku, jednak przyzwyczajenie uruchomić moje testy żartem poprawnie - i zawsze:XMLHttpRequest nie jest zdefiniowany podczas testowania aplikacji o natywnej aplikacji z kodem

ReferenceError: XMLHttpRequest is not defined 

gdy próbuję uruchomić testy przy moim api otoki, np .:

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

Klasa api, którą próbuję przetestować, używa apletu pobierania (nie vanilla xhr). Zakładam, że ma coś wspólnego z żartem, próbującym kpić z czegoś, ale nie znalazłem sposobu, żeby to zadziałało.

Z góry dziękuję.

+0

Możliwy duplikat [testowania użyciem nagłówków XHR żartem] (http://stackoverflow.com/questions/28584773/xhr-testing-in-jest) –

+0

używam nie pobieraniu tak XHR dostarczone rozwiązanie naprawdę nie rozwiązuje problemu. Chociaż faktycznie chcę przeprowadzić test integracji. Prawidłowe naśmiewanie się z api aportu byłoby również do przyjęcia ... nie znalazłem jednak sposobu, aby poprawnie określić, co powinienem udawać, dla których wejść do pobierania ... – dburgmann

Odpowiedz

2

Miałem podobny problem z lokka przy użyciu XMLHttpRequest. Zrobiłem próbę na lokka, od której zależy moja klasa pakowania api. Możesz spróbować kpić z twojego wrappera APi.

Oto, jak wygląda moja próbka lokka. Dodam do tego więcej, gdy zacznę testować obsługę błędów.

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

Możecie móc szydzić swoje api otoki z czymś podobnym:

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

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

W moim przypadku, nie jestem testowania kodu wyszukiwarki ale tylko importującego go gdzieś w mojej ścieżce kodu, tak Postanowiłem po prostu wyśmiewać go na poziomie globalnym w pliku setup.js (ładowany przy użyciu testu --require). Następujące roboty dla mnie:

// needed in react-instantsearch 
class XMLHttpRequest {} 
global.XMLHttpRequest = XMLHttpRequest; 
Powiązane problemy