node.js - 在 mocha 中,如何在执行另一个测试之前等待异步测试结束?
问题描述
在 mocha 我有两个测试:
- 第一个测试异步方法是否获得应有的值:
- 第二个测试是否在获取值时,第一个方法有“缓存”(我有一个内部机制)一个值,所以也是异步的。
因此,在执行第二个测试之前,我需要确保我的第一个测试已完全完成(这意味着我的第一个获取值的异步方法已完全完成)。
这是我的代码:
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;
})
});
})
如果您依赖在此之前运行的其他测试,您是:
- 如果有人移动代码会遇到问题
- 如果之前的测试由于某种原因失败,就会遇到问题。您不希望依赖其他测试通过
推荐阅读
- reactjs - 无法使用 reactjs 解决菜单栏问题?
- r - 如何使用 rtweet->search_fullarchive->place_country: 命令提取特定国家/地区的数据?
- javascript - 如何在 2020 年像在 PHP 中一样简单地格式化 JavaScript 中的日期?
- python - hyperopt - 是否可以获得其搜索空间的当前值?
- sql - 尝试在 sql 中使用 YearFrac
- php - 有没有办法在 WordPress 中设置 add_menu_page() 的样式?
- ios - 在 SwiftUI 中滑动列表时隐藏导航栏
- css - 我无法更改块的颜色
- python - 管道中的第二个“ParallelRunStep”在启动时超时
- spring-batch - 即使作业失败,步骤/Tasklet 也始终执行