I know that kind of problem is old. But I already tried everything, and I can't solve this problem.
The error is
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
I already tried set a large timeout. But this solution does not work too.
Follow my code and the class who access 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');
}
}
}
I can share my package.json and tsconfig.json too. If someone could help me, I'll appreciate.
According to the documentation you need to either return a promise, or use the done()
callback.
So either remove the return:
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);
})
});
});
or use the async/await syntax :
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');
});
});
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.