标签: react-native-keychain

如何使用 react-native-keychain 保存多个键值?

我有多个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 react-native-keychain

6
推荐指数
2
解决办法
1935
查看次数

模拟react-native-keychain,未定义不是一个函数

我正在尝试为我的辅助函数编写一个测试,它使用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

5
推荐指数
0
解决办法
561
查看次数