javascript - 在 Mocha 中的 Before Hook 之前执行 BeforeEach Hook
问题描述
我想创建一个在beforeEach
Hook 之前执行的before
Hook。
基本上我想要以下行为:
beforeEach(() => {
console.log('beforeEach')
})
describe('tests', () => {
before(() => {
console.log('before')
})
it('test 1', () => {
console.log('it')
})
})
我得到:
before
beforeEach
it
但我想要的输出是:
beforeEach
before
it
获得所需行为的正确结构是什么?
解决方法
目前,我找到了使用两个嵌套 beforeEach 的解决方法:
beforeEach(() => {
console.log('beforeEach1')
})
describe('tests', () => {
beforeEach(() => {
console.log('beforeEach2')
})
it('test 1', () => {
console.log('it')
})
})
哪个输出是:
beforeEach1
beforeEach2
it
解决方案
我不确定这一点(我还没有测试过),但从文档看来,你的根级别beforeEach
可能没有按照你的想法做。
...
run spec file/s
|
|--------------> per spec file
suite callbacks (e.g., 'describe')
|
'before' root-level pre-hook
|
'before' pre-hook
|
|--------------> per test
'beforeEach' root-level pre-hook
|
'beforeEach' pre-hook
...
从上图中,您可以看到每个describe
根before
级别的 pre-hook 都被调用。只需将您的根级别转换beforeEach
为 abefore
即可解决。
一般规则是before
回调总是出现在回调“之前”(没有双关语)beforeEach
,独立于它们定义的级别。
推荐阅读
- javascript - 按下 OnClick 按钮后显示 HTML 块的我的 JS 函数有问题
- shopify - 从多个系列中提取产品 - Shopify Liquid
- reactjs - 反应 useEffect 和 useRef
- google-analytics - 在 SAS 中将 Google Analytics API 与 OAuth 客户端一起使用,无需部署应用程序
- c# - 在 try catch 中缺少插入表
- php - PHP会话和memcached服务器的问题
- machine-learning - 如何将 optuna 的 study.optimize 详细程度设置为 0?
- javascript - 结合数组函数解构
- mysql - MySQL删除然后选择查询
- cypress - 如何在 cypress 中获取对浏览器弹出窗口的引用?用于选择蓝牙设备的弹出窗口