2016-11-18 3 views
0

Я создаю тесты интеграции для моего API и запустить в следующее сообщение об ошибке:Экспресс-тестирование интеграции API: ошибка: превышен превышение 2000 мс. Убедитесь, что сделано() обратного вызова вызывается в этом тесте

Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test

Я знаю, что этот вопрос был задан несколько раз, но ответы не помогли мне решить эту проблему. Тест на вопрос, чтобы проверить маршрут POST, и сделать обратный вызов вызывается:

it('should create a transaction', function(done) { 
    request(app) 
     .post('/api/transactions') 
     .send({ 
     name: 'Cup of coffee', 
     amount: 2.50, 
     date: '2016-11-17T17:08:45.767Z' 
     }) 
     .set('Accept', 'application/json') 
     .expect('Content-Type', /json/) 
     .expect(201) 
     .end(function(err, resp) { 
     expect(resp.body).to.be.an('object'); 
     done(); 
     }) 
    }) 

Сообщение маршрут выглядит следующим образом:

.post(function (req, res) { 
    var transaction = new Transaction() 
    transaction.name = req.body.name 
    transaction.amount = req.body.amount 
    transaction.date = req.body.date 

    transaction.save(function (err) { 
     if (err) { 
     res.send(err) 
     } 
     res.json(transaction) 
    }) 
    }) 

мангуст схемы для сделки:

var mongoose = require('mongoose') 
var Schema = mongoose.Schema 

var TransactionsSchema = new Schema({ 
    name: String, 
    amount: Number, 
    date: { type: Date, default: Date.now } 
}, { 
    collection: 'transactions' 
}) 

module.exports = mongoose.model('Transactions', TransactionsSchema) 

Любые идеи? Спасибо :)

ответ

1

Внутри вашего теста вы можете определить тестовые timeout

it('should create a transaction', function(done) { 
    // Specify a timeout for this test 
    this.timeout(30000); 

    request(app) 
     .post('/api/transactions') 
     .send({ 
     name: 'Cup of coffee', 
     amount: 2.50, 
     date: '2016-11-17T17:08:45.767Z' 
     }) 
     .set('Accept', 'application/json') 
     .expect('Content-Type', /json/) 
     .expect(201) 
     .end(function(err, resp) { 
     expect(resp.body).to.be.an('object'); 
     done(); 
     }) 
    }); 
+0

Ах человек, очень здорово - спасибо. Так ли это, что мой ноутбук настолько стар, что слишком много времени для запуска тестов? :) – zeKoko

Смежные вопросы