Buduję aplikację z React Native. Chcę zminimalizować częstotliwość komunikacji z bazą danych, dlatego intensywnie korzystam z AsyncStorage. Jest dużo miejsca na błędy w tłumaczeniu między DB a AsyncStorage. Dlatego chciałbym się upewnić, że AsyncStorage ma dane, które moim zdaniem robią, uruchamiając zautomatyzowane testy przeciwko niemu. Co zaskakujące, nie znalazłem żadnych informacji, jak to zrobić w Internecie. Moje próby zrobienia tego na własną rękę nie wyszło.Jak testować pamięć asynchroniczną za pomocą?
Korzystanie żartem:
it("can read asyncstorage",() => {
return AsyncStorage.getItem('foo').then(foo => {
expect(foo).not.toBe("");
}); });
Metoda ta nie powiodła się z powodu błędu:
TypeError: RCTAsyncStorage.multiGet is not a function
Zdejmowanie powrót spowoduje go uruchomić natychmiast, bez czekania na wartości i niewłaściwie zdać test.
zostałem uderzony z dokładnie tego samego błędu, gdy próbowałem go przetestować za pomocą słowa kluczowego czekają:
it('can read asyncstorage', async() => {
this.foo = "";
await AsyncStorage.getItem('foo').then(foo => {
this.foo = foo;
});
expect(foo).not.toBe(""); });
Wszelkie sugestie, w jaki sposób z powodzeniem uruchomić twierdzeń wobec wartości w AsyncStorage? Wolałbym nadal używać Jest, ale jeśli można to zrobić tylko z alternatywną biblioteką testową, jestem do tego otwarty.
To rozwiązanie będzie działać tylko w twoim przypadku użycia, poniższe rozwiązanie powinno być zaakceptowane! – Ouadie
@Ouadie wymaga edycji, więc zdefiniowane są 'multiGet' i' multiSet'. @ brian-case pytał konkretnie o 'multiGet'. Wykopam, jak skończyłem się drwić z mojego, unikając zakodowanych odpowiedzi na 'resolve()' – jaygooby
Uzyskiwanie "Nie można znaleźć modułu" AsyncStorage "z" react-native-implementation.js "w moim teście podczas używania twojego drwić - jakikolwiek pomysł, dlaczego? :) @jaygooby – jhm