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()}