指导创建jest.config.file

时间:2018-12-05 23:34:33

标签: node.js jestjs

我在Node应用程序中使用Jest,并且在控制台中收到以下消息:

Mongoose:看起来像您正在尝试使用Jest的默认jsdom测试环境测试Mongoose应用程序。请确保您已阅读Mongoose的有关配置Jest以测试Node.js应用程序的文档:http://mongoosejs.com/docs/jest.html

我已经阅读了文档,但是当他们第一次使用它时,感觉就像他们希望我熟悉这个库一样。文档说要添加这段代码:

module.exports = {
  testEnvironment: 'node'
};

到我的jest.config.js文件,但是此文件在哪里?我应该在目录中的哪个位置创建此文件?我在项目文件夹的根目录中创建了文件,并添加了之前的代码,但是消息仍然保留在控制台中。我该怎么解决?

3 个答案:

答案 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中找到。 希望我回答了您的问题...