使用命令安装模块:从项目的根目录运行此命令。
npm install --save mock-async-storage
在项目根目录中创建__mocks__\@react-native-community
文件夹。在其中创建一个文件 async-storage.js。async-storage.js 中的代码
export default from '@react-native-community/async-storage/jest/async-storage-mock'
在 package.json 中配置 jest 如下:
"jest": {
"preset": "jest-expo",
"transformIgnorePatterns" : ["/node_modules/@react-native-community/async-storage/(?!(lib))"]
},
这里我使用 jest-expo 进行测试。如果您使用的是 jest,那么预设值将是 jest 而不是 jest-expo。
在项目根目录中,在 jest.config.js 文件中创建一个名为 jest.config.js 的配置文件:
module.exports = {
setupFilesAfterEnv: [
'./setup-tests.js',
],
};
在项目根目录中创建一个名为 setup-tests.js 的文件。此文件中的代码是:
import MockAsyncStorage from 'mock-async-storage';
const mockImpl = new MockAsyncStorage();
jest.mock('@react-native-community/async-storage', () => mockImpl);
在项目根目录中创建测试文件。这里我称它为 Example.test.js。
import AsyncStorage from '@react-native-community/async-storage';
beforeEach(() => {
AsyncStorage.clear();
// console.log(`After the data is being reset :`)
// console.log(AsyncStorage)
});
it('can read asyncstorage', async () => {
await AsyncStorage.setItem('username', 'testUser')
let usernameValue = await AsyncStorage.getItem('username')
// console.log(`After the data is being set :`)
// console.log(AsyncStorage)
expect(usernameValue).toBe('testUser')
});
这里使用 AsyncStorage.setItem 将用户名的值设置为testUser。然后使用 getItem 函数获取值。测试用例是比较usernameValue是否等于testUser。如果是,则测试用例通过,否则测试用例将失败。
使用 beforeEach 以便每次运行测试用例时 Asyncstorage 都会被清除并且为空。如果需要,可以使用 console.log 检查 Asyncstorage 中存在的内容
运行命令yarn test来运行测试。输出是: