我有多个key, value,我不知道如何key, value在不同的地方存储多个。
是否有使用react-native-keychainpackage的以下代码的替代方法?
await AsyncStorage.setItem('pincode', '12345');
await AsyncStorage.setItem('userid', '@user8383928');
await AsyncStorage.setItem('contacts', JSON.stringify(contacts_array_of_object));
Run Code Online (Sandbox Code Playgroud)
以上每个都key, value saving可能在不同的函数和不同的时间调用。
问题在于react-native-keychain只有两个属性username, password:
async () => {
const username = 'zuck';
const password = 'poniesRgr8';
// Store the credentials
await Keychain.setGenericPassword(username, password);
try {
// Retrieve the credentials
const credentials = await Keychain.getGenericPassword();
if (credentials) {
console.log('Credentials successfully loaded for user ' + credentials.username);
} else {
console.log('No credentials stored');
}
} …Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的辅助函数编写一个测试,它使用react-native-keychain 库。
据此,我根据文档嘲笑了该库。
我在该目录下添加了一个目录react-native-keychain __mocks__,并添加了以下代码:
const keychainMock = {
SECURITY_LEVEL_ANY: 'MOCK_SECURITY_LEVEL_ANY',
SECURITY_LEVEL_SECURE_SOFTWARE: 'MOCK_SECURITY_LEVEL_SECURE_SOFTWARE',
SECURITY_LEVEL_SECURE_HARDWARE: 'MOCK_SECURITY_LEVEL_SECURE_HARDWARE',
setGenericPassword: jest.fn().mockResolvedValue(),
getGenericPassword: jest.fn().mockResolvedValue(),
resetGenericPassword: jest.fn().mockResolvedValue(),
};
export default keychainMock;
Run Code Online (Sandbox Code Playgroud)
我的辅助函数调用 getGenericPassword 方法。
{
getGenericPassword().then(genericPassword => {
if (genericPassword) {
setUser({jwt: genericPassword.password, authorities: []});
}
});
}
Run Code Online (Sandbox Code Playgroud)
我的测试如下所示:
describe('AuthProvider', () => {
test('Snapshot', () => {
const component = renderer.create(
<AuthProvider>
<MockComponent />
</AuthProvider>,
);
expect(component.toJSON()).toMatchSnapshot();
});
Run Code Online (Sandbox Code Playgroud)
运行测试时出现以下错误:
TypeError: (0 , _reactNativeKeychain.getGenericPassword) is not a function
Run Code Online (Sandbox Code Playgroud)
包.json:
"react": "17.0.2",
"react-native": "0.68.1",
"react-native-keychain": …Run Code Online (Sandbox Code Playgroud) typescript reactjs jestjs react-native react-native-keychain