2 回答
TA贡献1864条经验 获得超2个赞
chai.request(app)
不接受 fastify 实例作为记录的输入:
您可以使用函数(例如express或connect应用程序)或node.js http(s)服务器作为请求的基础
您应该启动 fastify 服务器并将其交给 chai:
var expect = require('chai').expect;
var app = require('./index.js');
var chaiHttp = require('chai-http');
var chai = require('chai');
chai.use(chaiHttp);
app.listen(8080)
.then(server => {
chai.request(server)
.get('/')
.end((err, res) => {
expect(res).to.have.status(200);
app.close()
});
})
这将按预期工作。
注意:您的 HTTP 处理程序不会调用reply.send,因此请求将超时,您也需要修复它:
app.get('/', (req, res) => {
console.log('Hello world');
res.code(200);
res.send('done')
});
作为旁注,我建议尝试fastify.inject
避免启动服务器侦听的功能,它将大大加快您的测试速度,并且您不会遇到已使用的端口的问题。
TA贡献1835条经验 获得超7个赞
// you must declare the app variable this way
var expect = require('chai').expect;
var app = require('../app/main.js').app;
var chaiHttp = require('chai-http');
var chai = require('chai');
chai.use(chaiHttp);
describe('Testing routes',()=>{
describe('Testing /allstyles',()=>{
it('Should return all style names',(done)=>{
chai.request(app)
.get('/')
.end((err,res)=>{
expect(res).to.have.status(200);
done();
});
});
});
});
添加回答
举报