在mocha中,如何在执行另一个测试之前等待异步测试结束?

问题描述 投票:0回答:1

在摩卡咖啡中,我有两个测试:

  • 第一个测试异步方法是否获得应有的值:
  • 第二个测试是否在获取值时,第一个方法是否已“缓存”一个值(我对此有内部机制),所以也异步了。

因此,在执行第二个测试之前,我需要确保我的第一个测试已完全完成(这意味着我的第一个获取值的异步方法已完全完成)。

这是我的代码:

it('Should return a valid value ', () => {
    myService.check('value', (success) => {
        expect(success.isValid)
    });
})
it('Should put the value in cache', () => {
    return myService.getCached('value').then(result => {
        expect(result).to.be.ok;
    })
})

问题是第二个'it'在第一个'it'完成之前就已启动...

我可以使用超时,例如:

it('Should return a valid value ', () => {
    myService.check('value', (success) => {
        expect(success.isValid)
    });
}).timeout(5000)
it('Should put the value in cache', () => {
    return myService.getCached('value').then(result => {
        expect(result).to.be.ok;
    })
})

但是我不喜欢,它不是100%可靠的,我认为在两次测试之间,我们不应该等待固定的时间值!

有更好的方法吗?

node.js unit-testing asynchronous mocha chai
1个回答
0
投票

我会让您的测试变得独立且自我实现。因此,如果要测试缓存,则应缓存该值并在缓存中检查该值,如下所示:

© www.soinside.com 2019 - 2024. All rights reserved.