簡體   English   中英

使用Mocha&Chai進行負載測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM