Open sbuys opened 1 year ago
You can simply use a library like dotenv to load your environment config now. As long as the properties are set in process.env, your parameterized config will pick it up.
@wneild 's solution seems to actually be a pretty good workaround until firebase-functions-test
support a similar function as mockConfig()
for parametrized config.
If someone else is looking for this, I ended up with this:
import * as fft from 'firebase-functions-test'
const projectConfig = {
projectId: 'my-project-id',
storageBucket: 'my-project-id.appspot.com',
}
export const testFunctions = fft(projectConfig)
// First load .env.local
dotenv.config({
path: path.resolve(process.cwd(), '.env.local'),
})
// Then load .env if there are other variables defined. This does not overwrite variables already defined in .env.local
dotenv.config({
path: path.resolve(process.cwd(), '.env'),
})
This makes the parametrized config like defineBoolean('MY_CUSTOM_ENV_VAR')
work in tested functions.
Version info
firebase-functions-test: 3.0.0
firebase-functions: 4.2.1
firebase-admin: 11.5.0
Steps to reproduce
.env
file with variable defined OR set via cli when deploying with firebase-toolsThe above works when deployed.
Expected behavior
firebase-functions-test
provides a mechanism for loading "parameterized config" into a test environment similar tomockConfig()
Actual behavior
firebase-functions-test
DOES NOT provide any mechanism for loading "parameterized config" into a test environment similar tomockConfig()