[英]How can I return the response from my api when testing with chai-http and Jest
I am trying to test my node api index endpoint with the code below我正在尝试使用以下代码测试我的节点 api 索引端点
index.test.js index.test.js
const chai = require('chai')
const chaiHttp = require('chai-http')
const server = 'http://localhost:8000'
chai.use(chaiHttp)
describe('set up test', () => {
it('set up test', () => {
expect(1).toEqual(1)
})
})
describe('index route test', () => {
it('index route test', (done) => {
const { res } = chai
.request(server)
.get('/')
.end((res) => {
expect(res.statusCode).toBe(200)
done()
})
console.log(res)
})
}) })
My output is as below:我的 output 如下:
Output Output
> jest --forceExit || true
FAIL tests/index.test.js
set up test
✓ set up test (6 ms)
index route test
✕ gives welcome message (49 ms)
● index route test › gives welcome message
expect(received).toBe(expected) // Object.is equality
Expected: 200
Received: undefined
18 | .get('/')
19 | .end((res) => {
> 20 | expect(res.statusCode).toBe(200)
| ^
21 | done()
22 | })
23 | console.log(res)
at tests/index.test.js:20:32
at Test.Object.<anonymous>.Request.callback (node_modules/superagent/lib/node/index.js:728:3)
at ClientRequest.<anonymous> (node_modules/superagent/lib/node/index.js:647:10)
console.log
undefined
at Object.<anonymous> (tests/index.test.js:23:13)
Test Suites: 1 failed, 1 total
Tests: 1 failed, 1 passed, 2 total
Snapshots: 0 total
Time: 1.63 s, estimated 2 s
Ran all test suites.
Force exiting Jest: Have you considered using `--detectOpenHandles` to detect async operations that kept running after all tests finished?
How can I return the response?如何返回响应?
I wasn't getting any response by passing the app url to the server variable.通过将应用程序 url 传递给服务器变量,我没有得到任何响应。 So I changed my syntax to ES6 import instead of the require and used the app module rather than the url for the application server as in the chai-http documentation here因此,我将语法更改为 ES6 import 而不是 require 并使用 app 模块而不是 url 用于应用程序服务器,如 chai-http 文档中所示
So my code structure transitioned to所以我的代码结构转变为
import chai from 'chai'
import chaiHttp from 'chai-http'
import server from '../app'
chai.use(chaiHttp)
describe('set up test', () => {
it('set up test', () => {
expect(1).toEqual(1)
})
})
describe('index route test', () => {
it('gives welcome message', (done) => {
chai
.request(server)
.get('/')
.then((res) => {
expect(res.statusCode).toBe(200)
done()
})
})
})
This way, I can capture the response to run checks on it.这样,我可以捕获响应以对其运行检查。 And my tests pass and required.我的测试通过并且需要。 The output is: output 是:
> jest --forceExit || true
PASS tests/index.test.js
set up test
✓ set up test (4 ms)
index route test
✓ gives welcome message (77 ms)
console.log
Application Server is up and running on port 8000
at Server.<anonymous> (app.js:43:11)
Test Suites: 1 passed, 1 total
Tests: 2 passed, 2 total
Snapshots: 0 total
Time: 3.189 s
Ran all test suites.
Force exiting Jest: Have you considered using `--detectOpenHandles` to detect async operations that kept running after all tests finished?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.