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();
});
});
});
});
添加回答
舉報