You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Tests do not load .env or serverless.yml variables #51
This leads to a mismatched environment between the code and the tests. In the code, the given environment variable is accessed under process.env.sampleEnvVar. However, the tests seem to be reading directly from the .env file. So, it seems the tests are expecting this variable under process.env.SAMPLE_ENV_VAR. To get it to work correctly, I had to change the format of my environment variables to make them consistent.
To avoid this confusion, I think the samples should be changed to be consistent also. The sample variable should either be sampleEnvVar or SAMPLE_ENV_VAR in both the .env file and the serverless.yml file.
I'm coming across an issue using the same three serverless plugins as serverless-nodejs-starter. My project uses env vars defined in the serverless.yml based on custom serverless variables, like so:
// handler that is being tested
dynamoDb.put({
TableName: process.env.USERS_TABLE_NAME,
Item: {... }
})
Ideally, 'serverless-bundle test' would use env vars defined in serverless.yml instead of the .env file itself. Thanks for any ideas - could be missing something basic here.
Hmm it doesn't right now. That's because the .env file is treated as the environment variables of the execution context, while the ones in the serverless.yml are the ones that are set in the Lambda function when it's deployed.
It's actually a little tricky to do this because serverelss-bundle test is running the tests agains the bundled code and not against what Serverless Framework creates.
Activity
jayair commentedon Oct 26, 2019
Oh good catch. Yeah I'll have a look at how to do this in the serverless-bundle plugin.
Steffan-Carlos commentedon Nov 22, 2019
@jayair Any update on this issue?
jayair commentedon Jan 2, 2020
Yeah I just pushed a beta version. Give it a try!
jeff-kilbride commentedon Feb 18, 2020
Environment variables are working for me in tests, but the sample docs are a bit confusing. In the sample
serverless.ymlfile, you have:with the following in the
env.examplefile:This leads to a mismatched environment between the code and the tests. In the code, the given environment variable is accessed under
process.env.sampleEnvVar. However, the tests seem to be reading directly from the.envfile. So, it seems the tests are expecting this variable underprocess.env.SAMPLE_ENV_VAR. To get it to work correctly, I had to change the format of my environment variables to make them consistent.To avoid this confusion, I think the samples should be changed to be consistent also. The sample variable should either be
sampleEnvVarorSAMPLE_ENV_VARin both the.envfile and theserverless.ymlfile.Hope this makes sense... :)
jayair commentedon Feb 23, 2020
@jeff-kilbride Good catch, let me update the sample in the comment.
Steffan-Carlos commentedon Apr 17, 2020
looks good to me
kevinkoste commentedon Jun 4, 2020
I'm coming across an issue using the same three serverless plugins as serverless-nodejs-starter. My project uses env vars defined in the serverless.yml based on custom serverless variables, like so:
Ideally, 'serverless-bundle test' would use env vars defined in serverless.yml instead of the .env file itself. Thanks for any ideas - could be missing something basic here.
jayair commentedon Jun 13, 2020
Hmm it doesn't right now. That's because the .env file is treated as the environment variables of the execution context, while the ones in the serverless.yml are the ones that are set in the Lambda function when it's deployed.
It's actually a little tricky to do this because serverelss-bundle test is running the tests agains the bundled code and not against what Serverless Framework creates.