mocha: Как уменьшить время печати при использовании setTimeout

Я запускаю mocha, mocha --slow 0 ./test/test.jsчтобы показать время, необходимое для завершения звонков. Я пишу библиотеку, которая делает очень асинхронные вещи с другой службой и временем отклика. Однако некоторые вызовы в моей библиотеке заставляют другую службу выполнять медленные операции, такие как запуск , остановка , удаление большего количества времени, чтобы существовать между двумя последовательными тестами. В результате отображается, что время печати для теста удаления больше, чем фактическое время, необходимое для завершения вызова.

describe(`stopContainer ${test_name} t:0`, () => {
  it(`should stop the container named ${test_name}`, () => {
    return engine.stopContainer(test_name, {t:0}).should.be.fulfilled
  })
})

// this shows to be much longer than the actual call takes
describe(`removeContainer ${test_name} v:1 `, () => {
  it(`should remove the container named ${test_name} & volumes`, function(done) {
    // needs to wait a second because of engine latency
    this.timeout(5000)
    setTimeout(() => {
      engine.removeContainer(test_name, {v:1}).should.be.fulfilled.and.notify(done);
    }, 1000)
  })
})

Распечатывает следующие

  stopContainer dap_test_container t:0
    ? should stop the container named dap_test_container (285ms)
  removeContainer dap_test_container v:1
    ? should remove the container named dap_test_container & volumes (1405ms)

Очевидно, что последний тест занял 1000 мс меньше, чем сообщается. Но я должен делать это повсюду с сотнями тестов, и поэтому приведенные значения становятся более бессмысленными, поскольку я не могу отслеживать, какие из них задерживаются, а какие нет.

note Я не хочу использовать это как метод профилирования моего кода, это просто для того, чтобы сделать мои результаты теста более значимыми.

Я хотел бы сократить время печати, есть ли способ мокко сократить время печати вручную? Или мокка обеспечивает лучшую конструкцию для этого?

javascript,node.js,asynchronous,mocha,

0

Ответов: 1


0

Это очень просто, задержка в beforeor after.

Я сделал глобальный вызов wait

global.wait = wait = function(ms) {
  return new Promise(resolve => {
    setTimeout(resolve, ms)
  })
}

И использовать его в тестах так

describe(`removeContainer ${test_name} v:1 `, () => {

  before('wait for latency', () => wait(1000))

  it(`should remove the container named ${test_name} & volumes`, () => {
    return engine.removeContainer(test_name, {v:1}).should.be.fulfilled;
  })
})
JavaScript, Node.js, асинхронный, мокко,
Похожие вопросы