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



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

  • 第一个测试异步方法是否得到了它应该得到的值:
  • 第二个测试在获取值时,第一个方法是否"缓存"了一个值(我有一个内部机制(,所以也是async

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

这是我的代码:

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('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%可靠的,我认为在两次测试之间,我们不应该等待固定的时间值!

有更好的方法吗?

我会让你的测试独立且自我实现。因此,如果你想测试你的缓存,你应该缓存这个值,并在缓存中检查这个值,如下所示:

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

如果你依赖于在此之前运行的其他测试,你就是:

  • 如果有人四处移动代码,就会遇到问题
  • 如果之前的测试由于某种原因失败,就会遇到问题。您不希望依赖其他测试通过

相关内容

  • 没有找到相关文章

最新更新