我知道这种问题由来已久。但我已经尝试了所有的方法,但我无法解决这个问题。
错误为
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
我已经尝试设置一个大的超时。但这种解决方案也不起作用。
遵循我的代码和访问mongo的类。
import { expect } from 'chai';
import { UserService } from "./../services/userService";
describe('Testar Usuario Service', () => {
describe('Método GET Teste', () => {
const userService = new UserService();
const users = userService.getTeste();
it('Deve retornar uma lista de nomes', () => {
expect(users).to.be.an('array');
});
});
describe('Method GET All Users', () => { //the error happen here
it('Deve retornar uma lista com todos os Usuários', (done) => {
const userService = new UserService();
return userService.getAllUsers().then(result => {
expect(result).to.be.an('array');
done();
}).catch((error) => {
done(error);
})
});
});
});
import { UserSchema } from '../models/userModel';
import * as mongoose from 'mongoose';
import {Request, Response} from "express";
const User = mongoose.model('User', UserSchema);
export class UserService {
public getTeste() {
const text = [{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }];
return text;
}
public async getAllUsers() {
try {
const users = await User.find({});
return users;
} catch (err) {
throw new Error('Erro de conexão');
}
}
public async insertUser(req: Request) {
const newUser = new User(req.body);
try {
await newUser.save();
} catch (err) {
throw new Error('Erro de conexão');
}
}
public async updateUser(req: Request) {
try {
const user = await User.findOneAndUpdate(
{cpf: req.body.cpf},
req.body,
{ new: true }
);
return user;
} catch (err) {
throw new Error('Erro de conexão');
}
}
public async getUser(req: Request) {
try {
const user = await User.findOne({cpf: req.params.cpf});
return user;
} catch (err) {
throw new Error('Erro de conexão');
}
}
public async deleteUser(req: Request) {
try {
const user = await User.findOneAndDelete({cpf: req.params.cpf});
return user;
} catch (err) {
throw new Error('Erro de conexão');
}
}
}
我也可以分享我的package.json和tsconfig.json。如果有人能帮我,我将不胜感激。
根据文档,您需要返回promise或使用done()
回调。
因此,要么删除返回:
describe('Method GET All Users', () => { //the error happen here
it('Deve retornar uma lista com todos os Usuários', (done) => {
const userService = new UserService();
userService.getAllUsers().then(result => {
expect(result).to.be.an('array');
done();
}).catch((error) => {
done(error);
})
});
});
或者使用async/await语法:
describe('Method GET All Users', () => { //the error happen here
it('Deve retornar uma lista com todos os Usuários', async () => {
const userService = new UserService();
const result = await userService.getAllUsers();
expect(result).to.be.an('array');
});
});