【发布时间】:2021-05-11 03:10:46
【问题描述】:
提前感谢您的阅读!
即使在寻找示例和教程之后,我仍在努力进行测试,我的测试无法正常工作,但我不确定问题是与 Chai 相关还是我的 API 服务器。
所有代码都是开源的,可用here。
我有一个端点,应该将所有练习作为列表返回:GET /v1/exercises
这是我的测试:
'use strict'
const chai = require('chai')
const chaiHttp = require('chai-http')
chai.should()
const app = require('../src/app')
chai.use(chaiHttp)
const expect = require('chai').expect
describe('Exercise', () => {
it('Should get all exercises', (done) => {
chai
.request(app)
.get('/v1/exercises')
.end((err, res) => {
const result = res.statusCode
expect(result).to.equal(200)
done()
})
})
})
我得到这个错误:
错误:超过 2000 毫秒的超时。对于异步测试和钩子,确保调用了“done()”;如果返回 Promise,请确保它已解决。 (/Users/kevintassi/Documents/project/fitigai/api/test/01.exercise.spec.js)
您可以在此处查看文件:
你知道为什么会出现这个问题吗? 请注意,我没有这个错误是端点错误,所以我猜只有在函数正在处理时才会出现超时。 但还是不明白为什么。
非常感谢您抽出宝贵时间。如果需要,请随时向我询问更多详细信息。
【问题讨论】:
-
您的 API 可能需要超过 2 秒才能响应,这就是它失败的原因。使用这个参数
--timeout 10000将超时时间增加到10 seconds,看看它是否有效。 -
嗨,Shaharyer,感谢您的回答。实际上它也不起作用。添加了 20s 所以测试但同样的问题。除了测试之外,即使是 api 的响应也很糟糕。 > 错误:超过 20000 毫秒的超时。对于异步测试和钩子,确保调用了“done()”;如果返回 Promise,请确保它已解决。 (/Users/kevintassi/Documents/project/fitigai/api/test/01.exercise.spec.js)
-
chai.request(app)可能没有启动您的服务器并且请求不成功。由于您没有处理err,因此您不知道发生了什么。单独启动服务器并提供chai的确切URL。 -
您可以尝试在您的
expect之前添加一个简单的console.log(result)语句,以确保响应确实及时返回。我相信可能不会。
标签: javascript node.js testing mocha.js chai