[英]Testing that express loads with mocha & chai
我在測試Express服務器時遇到問題,預計會收到200響應。 當我運行測試時,出現錯誤:
Test server status
1) server should return 200
0 passing (260ms)
1 failing
1) Test server status
server should return 200:
TypeError: app.address is not a function
這是規格文件:
import chai from 'chai';
import chaiHttp from 'chai-http';
import mongoose from 'mongoose';
import server from '../server/server.js'
chai.use(chaiHttp);
let should = chai.should()
describe("Test server status", function () {
this.timeout(20000);
it('server should return 200', async () => {
const app = await server;
return chai.request(app)
.get('/helloworld')
.then(res => {
res.status.should.equal(200);
res.body.message.should.equal('Hello World!');
})
})
})
我在想問題是它正在嘗試在服務器加載之前進行測試。 有任何想法嗎? 我正在使用nextjs,如果這很重要。
這是服務器文件:
import mongoose from 'mongoose';
import express from 'express'
import next from 'next'
const port = parseInt(process.env.PORT, 10) || 3000
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev, dir: '.' })
const handle = app.getRequestHandler()
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://***********');
mongoose.connection.on('error', (err) => {
console.error(err);
console.log('%s MongoDB connection error. Please make sure MongoDB is running.', chalk.red('✗'));
process.exit(1);
});
app.prepare().then(() => {
const server = express()
server.get('/helloworld', (req, res) => {
res.json({message:'Hello World!'})
})
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(port, (err) => {
if (err) throw err
console.log(`> Ready on http://localhost:${port}`)
})
})
我在考慮,因為我正在使用ES6,所以可能將服務器放在一個類中。
您的server.js沒有導出Promise,因此在測試中等待不執行任何操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.