If you want to test Async Storage with Jest? My original answer just pointed at how the author of react-native-simple-store had dealt with the mocking. I’ve updated my answer with my own mocking that removes Jason’s hard-coded mock responses.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | jest.mock('react-native', () => ({ AsyncStorage: { setItem: jest.fn(() => { return new Promise((resolve, reject) => { resolve(null); }); }), multiSet: jest.fn(() => { return new Promise((resolve, reject) => { resolve(null); }); }), getItem: jest.fn(() => { return new Promise((resolve, reject) => { resolve(JSON.stringify(getTestData())); }); }), multiGet: jest.fn(() => { return new Promise((resolve, reject) => { resolve(multiGetTestData()); }); }), removeItem: jest.fn(() => { return new Promise((resolve, reject) => { resolve(null); }); }), getAllKeys: jest.fn(() => { return new Promise((resolve) => { resolve(['one', 'two', 'three']); }); }) } })); |
Here is mock example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | const items = {}; jest.mock('react-native', () => ({ AsyncStorage: { setItem: jest.fn((item, value) => { return new Promise((resolve, reject) => { items[item] = value; resolve(value); }); }), multiSet: jest.fn((item, value) => { return new Promise((resolve, reject) => { items[item] = value; resolve(value); }); }), getItem: jest.fn((item, value) => { return new Promise((resolve, reject) => { resolve(items[item]); }); }), multiGet: jest.fn((item) => { return new Promise((resolve, reject) => { resolve(items[item]); }); }), removeItem: jest.fn((item) => { return new Promise((resolve, reject) => { resolve(delete items[item]); }); }), getAllKeys: jest.fn((items) => { return new Promise((resolve) => { resolve(items.keys()); }); }) } })); |
If you like this question & answer and want to contribute, then write your question & answer and email to freewebmentor[@]gmail.com. Your question and answer will appear on FreeWebMentor.com and help other developers.