我使用mocha --slow 0 ./test/test.js
运行mocha来显示完成调用所需的时间。我正在编写一个与其他服务非常异步的库,并且响应时间非常重要。但是我的库中的一些调用导致另一个服务执行慢操作,如启动,停止,删除更多时间完成然后存在于两个之间连续测试。结果是 remove 测试的打印时间显示为比完成调用所需的实际时间更长。
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毫秒。但是我必须在整个地方进行数百次测试,所以报告的值变得更加无意义,因为我无法跟踪哪些是延迟的,哪些不是。
注意我不是故意将其用作分析我的代码的方法,这只是为了让我的测试结果更有意义。
我想减少打印时间,有没有办法用摩卡手动减少打印时间?或者摩卡是否为这样做提供了更好的结构?
答案 0 :(得分:0)
这很简单,延迟before
或after
。
我做了一个全球叫做等待
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;
})
})