Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用mocha和chai使用promise_Javascript_Node.js_Express_Mocha.js - Fatal编程技术网

Javascript 如何使用mocha和chai使用promise

Javascript 如何使用mocha和chai使用promise,javascript,node.js,express,mocha.js,Javascript,Node.js,Express,Mocha.js,首先,我制作了虚拟数据。 interface Student { id: number; name: string; age: number; } const students: Student[] = [ { id: 3, name: 'Sean Grey', age: 24 }, { id: 2, name: 'Sllllean Grey', age: 224 }, { id: 3, name:

首先,我制作了虚拟数据。

interface Student {
  id: number;
  name: string;
  age: number;
}

const students: Student[] = [
  {
    id: 3,
    name: 'Sean Grey',
    age: 24
  },
  {
    id: 2,
    name: 'Sllllean Grey',
    age: 224
  },
  {
    id: 3,
    name: 'Seansdajfklajs Grey',
    age: 2114
  }
];

export default students;
其次,这是我在nodejs上的控制器api。

import express from 'express';
import students from '../../dummy/students';

class StudentController {
  static getAllStudents(req: express.Request, res: express.Response) {
    return res.status(200).json({
      students,
      message: 'All the students'
    });
  }
}

export default StudentController;
最后,我使用nodejs上的mocha和chai编写了如下测试代码

import chai from 'chai';
import chaiHttp from 'chai-http';
import chaiAsPromised from 'chai-as-promised';
import Index from '../index';

chai.use(chaiHttp);
chai.use(chaiAsPromised);
chai.should();

describe('Students', () => {
  describe('GET /', () => {
    it('Should get all students record', done => {
      chai
        .request(Index)
        .get('/')
        .end((err, res) => {
          return Promise.all([
            res.should.have.status(200),
            res.body.should.be.a('object'),
            done()
          ]);
        });
    });
  })
})
但是当我运行这段all代码时,它给了我一个错误“error:Timeout of 2000ms extered.For 异步测试和钩子,确保调用“done()”;如果返回承诺,确保它已解析。“

我不知道如何解决这个问题。你能推荐一些建议吗?非常感谢你的阅读

为什么要返回
承诺。所有
结束
链中。然后简单地检查res.should.have.status(200)
和其他没有
返回
承诺的
。我不太理解。你能写下你说的代码吗?@ambianBeing告诉你的是,没有理由在这里使用promise(更不用说promise.all)的意思是:
.end((err,res)=>{res.should.have.status(200);res.body.should.be.a('object');done();})
这是非常确定的
承诺的返回。不需要所有的
。如果您确实想使用承诺,那么您应该这样做:
it('应该很神奇'),async()=>{const res=wait someAsyncFunction()}