开玩笑测试中无法使用 Expo 安全存储
Expo secure-store unavailable in jest tests
这个问题专门针对 expo-secure-store
和 jest
。
目前,我在登录时使用 expo-secure-store 来存储我的 JWT。在模拟器上 运行 时它工作正常但是,它在 Jest 测试中根本不起作用;令牌返回为 undefined
。我可以正常调用函数了。
请原谅我在重构时可能出现的任何拼写错误。
从测试调用:
test('when logging in, given correct credentials, gets response token.', async () => {
try {
var token = await SecureStore.getItemAsync("token");
await SecureStore.setItemAsync('token', 'test');
token = await SecureStore.getItemAsync('token');
console.log(token);
expect(token).toBeDefined();
expect(token).toBe("test");
} catch (err) {
console.log(err);
throw err;
}
}
问题:如果没有实际的 device/emulator,expo-secure-store 不会 load/work 吗?
根本没有关于使用安全存储进行测试的文档,据我所知,我可能必须模拟这个模块。
您必须模拟您使用的任何本机模块,因为它们的实现主要存在于旨在 ios 和 android 设备上 运行 的本机代码中。所以这同样适用于这里 - 你应该模拟 expo-secure-store.
这个问题专门针对 expo-secure-store
和 jest
。
目前,我在登录时使用 expo-secure-store 来存储我的 JWT。在模拟器上 运行 时它工作正常但是,它在 Jest 测试中根本不起作用;令牌返回为 undefined
。我可以正常调用函数了。
请原谅我在重构时可能出现的任何拼写错误。 从测试调用:
test('when logging in, given correct credentials, gets response token.', async () => {
try {
var token = await SecureStore.getItemAsync("token");
await SecureStore.setItemAsync('token', 'test');
token = await SecureStore.getItemAsync('token');
console.log(token);
expect(token).toBeDefined();
expect(token).toBe("test");
} catch (err) {
console.log(err);
throw err;
}
}
问题:如果没有实际的 device/emulator,expo-secure-store 不会 load/work 吗?
根本没有关于使用安全存储进行测试的文档,据我所知,我可能必须模拟这个模块。
您必须模拟您使用的任何本机模块,因为它们的实现主要存在于旨在 ios 和 android 设备上 运行 的本机代码中。所以这同样适用于这里 - 你应该模拟 expo-secure-store.