node.js - JEST - 节点服务器在启动过程中遇到问题
问题描述
我有一个节点应用程序,它有一个名为 server.js 的文件,我在其中运行
node server.js env=feature port=8081
以启动节点服务器。我安装了 jest 和 supertest。sample.test.js
在我正在点击的文件中编写了一个异步获取调用后npm test
,但结果并不如预期。因为要启动 server.js,我将传递两个名为 env 和 port 的参数,如上所述。我的问题是,如何在 Jest 中使用它。我的服务器导入代码如下
const app = require('../server.js')
const request = supertest(app)
describe('Sample Test', () => {
const response = await request.get("/rest/api/v1/mytools/getAvailableTools?provisioning=all");
console.log('James bob ' + JSON.stringify(response))
expect(response.statusCode).toEqual(401);
done()
})
解决方案
有几种方法可以解决这个问题。
首先,使用环境变量传递这些值是一种常见的做法,您必须更新处理这些值的代码,但最后,您可以执行以下操作:
ENV=feature PORT=8081 node server.js
ENV=feature PORT=8081 npm test
第二种选择是将命令行参数与实际服务器分离并单独测试它们,例如
export const createServer(env, port) {
// Server code
}
// Command line processing code
createServer(cliEnv, cliPort)
所以在测试中你可以写:
const createServer = require('../server.js')
const request = supertest(createServer('feature', 8081))
describe('Sample Test', () => {
const response = await request.get("/rest/api/v1/mytools/getAvailableTools?provisioning=all");
console.log('James bob ' + JSON.stringify(response))
expect(response.statusCode).toEqual(401);
done()
})
推荐阅读
- flutter - Flutter GridView.count 元素之间不需要的填充/空间
- python - 我们可以在函数映射需要超过 1 个参数的情况下应用 pandas.map() 吗?
- javascript - Javascript event not registering for right click event (in React)
- mysql - How to replace NULL values without updating the table or creating temp table
- chilkat - CkFtp PutTree not working with UNC pathes any more
- prolog - 如何获取从 Prolog 的知识库中提取的元素列表?
- sql - How to read multiple value from a temp table and assign it to a variable
- php - HTML text inputs not returning proper value
- typescript - 在构建期间使用 typescript 转换环境变量
- r - 计算其他实体面板数据的百分比变化