When running unit test, meet: Cannot read properties of undefined (reading 'exists')

Please provide the following:

  1. SDK Version: 48
  2. Platforms(Android/iOS/web/all): IOS
  3. #sdk #test #jest

After upgrading my project from Expo45 to Expo48, I encounter this error when running the test:

TypeError: Cannot read properties of undefined (reading 'exists')
at exists (node_modules/expo-asset/src/PlatformUtils.ts:65:17)  
at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)  
at _next (node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)

The unit test itself is quite simple:

  it('Should be able rendered properly', () => {
    render(
      <UserContext.Provider
        value={[initialState, jest.fn()]}
      >
        <UpdatePasswordScreen />
      </UserContext.Provider>,
    );
  });

The UpdatePasswordScreen component is like this:

    <View style={styles.container}>
      <Spinner
        visible={showSpinner}
        textContent={'Loading...'}
        textStyle={{
          color: '#FFFFFF',
        }}
      />
      <CustomInput
        titleStyle={{
          size: 13,
        }}
        titleContainerStyle={{
          marginBottom: 10,
        }}
        containerStyle={{
          marginBottom: 8,
        }}
        placeholder="Enter Password"
        title="Old password"
        value={oldPassword}
        secureTextEntry={!showOldPassword}
        onRenderLeftIcon={() => (
          <Icon
            name={showOldPassword ? 'eye' : 'eye-off'}
            type="feather"
            size={20}
            color="#AFB4B9"
            onPress={() => setShowOldPassword(!showOldPassword)}
          />
        )}
        onChangeText={setOldPassword}
      />
      <View style={styles.confirmButton}>
        <IconButton
          text="Reset Password"
          buttonStyle={{
            height: 52,
            width: 200,
          }}
          onPress={updatePassword}
          disabled={!oldPassword || !newPassword
            || !confirmNewPassword || showPasswordErrorMessage()
            || newPassword !== confirmNewPassword
            || oldPasswordUnchanged
          }
        />
      </View>
    </View>

I just want to render the component but it doesn’t work. The unit test run well under Expo45.

Any suggestions will be appreciated!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.