我在Node应用程序中使用Jest,并且在控制台中收到以下消息:
Mongoose:看起来像您正在尝试使用Jest的默认jsdom测试环境测试Mongoose应用程序。请确保您已阅读Mongoose的有关配置Jest以测试Node.js应用程序的文档:http://mongoosejs.com/docs/jest.html
我已经阅读了文档,但是当他们第一次使用它时,感觉就像他们希望我熟悉这个库一样。文档说要添加这段代码:
module.exports = {
testEnvironment: 'node'
};
到我的jest.config.js文件,但是此文件在哪里?我应该在目录中的哪个位置创建此文件?我在项目文件夹的根目录中创建了文件,并添加了之前的代码,但是消息仍然保留在控制台中。我该怎么解决?
答案 0 :(得分:1)
您可以直接在package.json文件上配置jest。
..., "scripts": { "start": "nodemon --exec babel-node server/index.js", "build": "babel server --out-dir dist", "serve": "node dist/index.js", "test": "jest --watchAll --verbose --detectOpenHandles ./server/api" }, "jest": { "testEnvironment": "node" }, ...
答案 1 :(得分:0)
对于每个项目,您都需要设置配置设置。我使用的是env-cmd软件包,它非常干净,不会让您头痛。
https://www.npmjs.com/package/env-cmd
npm install env-cmd
然后在您的根文件夹中创建一个/ config目录。在其中创建一个dev.env和test.env文件。像这样在这里输入变量。
/config/dev.env //字符串中什么都没有
PORT=3000
MONGODB_URL=mongodb://127.0.0.1:27017/rest-api
/config/test.env
PORT=3000
MONGODB_URL=mongodb://127.0.0.1:27017/rest-api-TESTING
请注意,对于命名约定,env变量始终为大写字母,我们用“ _”分隔。和值不是字符串。同样重要的是,在测试环境中不要使用相同的数据库,以免污染开发数据库。
现在您需要配置package.json文件。在“脚本”中,我们通常具有启动,开发,测试脚本。开始是针对部署平台,针对测试进行测试以及针对我们当前的开发环境进行的开发。如果您使用的是nodemon(很可能是您),则开发脚本应该是这样的。
"scripts": {
"start": "node src/index.js",
"dev": "nodemon src/index.js",
"test": "echo \"Error: no test specified\" && exit 1"
},
当您运行npm run dev时,终端将运行此节点mon src / index.js。这是任何节点应用程序的基本配置。现在我们需要传递存储在/config/dev.env中的变量。到我们的应用程序。对于此更改,“开发”和“测试”如下所示:
"dev": "env-cmd -f ./config/dev.env nodemon src/index.js",
"test": "env-cmd ./config/test.env jest --watchAll"
现在,当您运行npm run test
时,express将在config / test.env中加载所有配置设置。我们需要在package.json中添加另一项设置:
"jest": {
"testEnvironment": "node"
},
这是您使用配置设置的方式。用于连接mongodb
mongoose.connect(process.env.MONGODB_URL, {
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false
})
如果您调用npm run dev
,则express将从./config/dev.env中加载设置,如果u调用npm run test
,express将从./config/test.env
注意,将项目部署到github时,已将配置文件夹名称添加到.gitignore文件。因此您的密码或api密钥将不会公开。
每当您向dev.env中添加一个新变量,终止终端进程并重新启动它。 mongodb将给出错误。
答案 2 :(得分:-1)
好吧,https://mongoosejs.com/docs/jest.html上的说明意味着如果您的环境是节点,则需要更改默认配置设置。因此,您可以将testEnvironment:'jest-environment-jsdom'更改为testEnvironment:'jest-environment-node',该文件可以在../node_modules/jest-config/build/Defaults.js中找到。 希望我回答了您的问题...