首页 > 解决方案 > 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()
})

标签: node.jsjestjs

解决方案


有几种方法可以解决这个问题。

首先,使用环境变量传递这些值是一种常见的做法,您必须更新处理这些值的代码,但最后,您可以执行以下操作:

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()
})

推荐阅读