Salut à tous !

Je suis en train de travailler sur une app react native, et je suis en train d'écrire quelques tests avec jest, et j'ai une erreur qui dit que mes variables sont undefined (donc mes tests échouent), mes données existent bien quand je fais un console.log(process.env) mais undefinded quand je les utilise.

J'ai vu plein de solutions plus ou moins farfelues, (du genre mettre en dur les variables dans le package.json) sauf que de mon côté ce sont des données assez sensibles, donc je ne peux pas me permettre de faire ça.

Donc je me demandais comment charger un .env (ou un .env.test)

j'ai cru lire quelque part que l'on pouvait mocker les variables d'environnements, mais je n'ai paas trouvé de solution.

Bonne journée et merci d'avance ;)

2 réponses


Salut,

Tu peux installer dotenv ou react-native-dotenv pour récup tes variables d'env

dans ton fichier jest.setup.js/ts, tu charges tes variables

// jest.setup.js

require('dotenv').config(); ou require('dotenv').config({ path: '.env.test' });

// jest.config.js

pour y avoir acces dans tt les fichiers de test

module.exports = {
  setupFiles: ['./jest.setup.js'],
  preset: 'react-native',
};

Sinon, tu les charges là où tu en as besoin.

Laznet
Auteur

Salut

Merci pour ta réponse, c'est exactement ce que je fais

et j'ai même essayé ça :

"test": "NODE_ENV=test jest --config=jest.config.js",
"test:watch": "NODE_ENV=test jest --config=jest.config.js --watchAll",

const createSupaClient = (url: string, key: string, options: SupabaseClientOptions<"public"> = {}): SupabaseClient => {
options.auth = options.auth || {}
options.auth.persistSession = false
return createClient(url, key, options)
}

const supabase = createSupaClient(process.env.EXPO_PUBLIC_SUPABASE_TEST_URL, process.env.EXPO_PUBLIC_SUPABASE_TEST_ANON_KEY)
j'ai trouvé cette méthode pour load un client supabase

sauf que là ça ne fonctionne pas, EXPO_PUBLIC_SUPABASE_TEST est undefined

alors que

import path from "path"
import dotenv from "dotenv"
dotenv.config({ path: path.resolve(__dirname, ".env.test") })

console.log("Loaded SUPABASE URL:", process.env)

m'affiche bien toutes mes variables (dont celle citées au dessus)