Как увеличить время ожидания для одного теста в мокко

mocha

143239 просмотра

8 ответа

1961 Репутация автора

Я отправляю сетевой запрос в тестовом примере, но иногда это занимает больше 2 секунд (время ожидания по умолчанию).

Как увеличить время ожидания для одного теста?

Автор: Mahendra S Источник Размещён: 12.04.2013 12:15

Ответы (8)


643 плюса

26983 Репутация автора

Вот и вы: http://mochajs.org/#test-level

it('accesses the network', function(done){
  this.timeout(500);
  [Put network code here, with done() in the callback]
})

Для функции стрелки используйте следующее:

it('accesses the network', (done) => {
  [Put network code here, with done() in the callback]
}).timeout(500);
Автор: Dan Kohn Размещён: 13.04.2013 12:36

16 плюса

7294 Репутация автора

Вы также можете подумать о другом подходе и замене вызова сетевого ресурса заглушкой или фиктивным объектом. Используя Sinon , вы можете отделить приложение от сетевого сервиса, сосредоточив усилия на разработке.

Автор: David Souther Размещён: 14.11.2013 01:39

20 плюса

1036 Репутация автора

Из командной строки:

mocha -t 100000 test.js
Автор: andrey Размещён: 03.02.2016 02:16

70 плюса

5027 Репутация автора

(так как я столкнулся с этим сегодня)

Будьте осторожны при использовании синтаксиса жирной стрелки ES2015:

Это не удастся:

it('accesses the network', done => {

  this.timeout(500); // will not work

  // *this* binding refers to parent function scope in fat arrow functions!
  // i.e. the *this* object of the describe function

  done();
});

РЕДАКТИРОВАТЬ: Почему это не удается:

Как @atoth упоминает в комментариях, функции жирных стрелок не имеют этой привязки. Таким образом, это не возможно для его функционирования , чтобы связываться с этим обратного вызова и обеспечить тайм - аут функции.

Итог : не используйте функции стрелок для функций, которые требуют увеличенного времени ожидания.

Автор: chriskelly Размещён: 14.02.2016 10:32

131 плюса

1319 Репутация автора

Если вы хотите использовать функции стрелок es6, вы можете добавить a .timeout(ms)в конец itопределения:

it('should not timeout', (done) => {
    doLongThing().then(() => {
        done();
    });
}).timeout(5000);

По крайней мере, это работает в Typescript.

Автор: Chris Sparrow Размещён: 28.03.2016 06:28

41 плюса

742 Репутация автора

Если вы используете в NodeJS, вы можете установить тайм-аут в package.json

"test": "mocha --timeout 10000"

тогда вы можете запустить с помощью npm, как:

npm test
Автор: Sumit Jolly Размещён: 14.05.2017 07:49

8 плюса

2933 Репутация автора

Для тестового наведения на Express:

const request = require('supertest');
const server = require('../bin/www');

describe('navegation', () => {
    it('login page', function(done) {
        this.timeout(4000);
        const timeOut = setTimeout(done, 3500);

        request(server)
            .get('/login')
            .expect(200)
            .then(res => {
                res.text.should.include('Login');
                clearTimeout(timeOut);
                done();
            })
            .catch(err => {
                console.log(this.test.fullTitle(), err);
                clearTimeout(timeOut);
                done(err);
            });
    });
});

В примере время теста составляет 4000 (4 с).

Примечание: setTimeout(done, 3500)незначительно для того, что doneвызывается во время теста, но clearTimeout(timeOut)оно избегает, чем используется все это время.

Автор: alditis Размещён: 12.11.2017 03:38

0 плюса

179 Репутация автора

Это сработало для меня! Не могу найти что-нибудь, чтобы заставить его работать до ()

describe("When in a long running test", () => {
  it("Should not time out with 2000ms", async () => {
    let service = new SomeService();
    let result = await service.callToLongRunningProcess();
    expect(result).to.be.true;
  }).timeout(10000); // Custom Timeout 
});
Автор: Otpidus Размещён: 18.10.2019 03:20
Вопросы из категории :
32x32