编程语言
首页 > 编程语言> > javascript-为什么我的快速测试未通过?

javascript-为什么我的快速测试未通过?

作者:互联网

我正在尝试使用Node / Express设置服务器,并希望能够编写ES6,所以我正在使用babel.

现在,服务器正在运行,我能够发出所需的请求,但是我想为此进行测试,以防万一需要进行任何修改.由于我无法确定的原因,测试失败.

这是我的代码,

App.js:

import express from 'express';
import bodyParser from 'body-parser';
import morgan from 'morgan';
import router from './routes/router';

// App Setup
const app = express();
app.use(morgan('combined'));
app.use(bodyParser.json({ type: '*/*' }));
router(app);

export default app;

Index.js:

import app from './app';

// Server Setup
const port = process.env.PORT || 3090;
app.listen(port, () => {
    console.log(`Server listening on: ${port}`);
});

Router.js:

const router = (app) => {
  app.get('/', (req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
  });
};

export default router;

test.js:

import assert from 'assert';
import request from 'supertest';
import app from '../app';

describe('The express App', () => {
  it('should return 200', done => {
    request(app)
      .get('/')
      .end((res) => {
        assert.equal(200, res.statusCode);
        done();
    });
  });
});

这是npm脚本:

"test": "mocha --compilers js:babel-register",

我得到的结果是:
enter image description here

您能告诉我我在做什么错吗?谢谢!

解决方法:

因为end回调的第一个参数是err,在您的情况下,该参数未定义并导致

assert.equal(200, undefined.statusCode)

正确的方式

.end((err, res) => {
   if (err) return done(err);
   assert.equal(200, res.statusCode);
   done();
})

更好的方法是直接使用@R回答的.expect(200).古尔布兰森.

标签:node-js,babeljs,mocha,express,javascript
来源: https://codeday.me/bug/20191026/1935488.html