首页 > 解决方案 > Expo 安全存储在开玩笑测试中不可用

问题描述

这个问题专门关于expo-secure-storejest

目前,我在登录时使用 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;
        }
   }

问题:如果没有实际的设备/模拟器,expo-secure-store 是否无法加载/工作?

根本没有关于使用安全存储进行测试的文档,据我所知,我可能不得不模拟这个模块。

标签: react-nativeunit-testingjestjsexporeact-native-testing-library

解决方案


您必须模拟您使用的任何本机模块,因为它们的实现主要存在于旨在在 ios 和 android 设备上运行的本机代码中。所以这里同样适用 - 你应该模拟 expo-secure-store。


推荐阅读