Open Steffan-Carlos opened 5 years ago
Oh good catch. Yeah I'll have a look at how to do this in the serverless-bundle plugin.
@jayair Any update on this issue?
Yeah I just pushed a beta version. Give it a try!
Environment variables are working for me in tests, but the sample docs are a bit confusing. In the sample serverless.yml
file, you have:
#environment:
# sampleEnvVar: ${env:SAMPLE_ENV_VAR}
with the following in the env.example
file:
SAMPLE_ENV_VAR=i-am-an-environment-variable
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.
Hope this makes sense... :)
@jeff-kilbride Good catch, let me update the sample in the comment.
looks good to me
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:
# serverless.yml
provider:
environment:
USERS_TABLE_NAME: ${self:custom.usersTableName}
custom:
stage: ${opt:stage, self:provider.stage}
usersTableName: ${self:custom.stage}-myproject-users
// 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.
On newest release when running
npm test
which runsserverless-bundle test
environment variables from serverless.ymlor from .env file
This issue was noticed in the serverless-bundle package and noted by @Vadorequest https://github.com/AnomalyInnovations/serverless-bundle/issues/4
Using his solution I was able to load .env variables by adding the following to the
package.json
jest-preload-env.js
severless-bundle test should load serverless.yml environment variables