我想创建一个在beforeEach
钩之前执行的before
钩。
基本上我想要以下行为:
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
答案 0 :(得分:1)
我不确定这一点(我尚未测试),但是从doc看来,您的根级别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
的{{1}}根级预钩都被调用。只需将根级别的before
放在beforeEach
中,就可以解决此问题。
一般规则是,before
回调总是在before
回调之前(而不是双关语)出现,与定义的级别无关。
答案 1 :(得分:0)
您可以使用内部具有beforeEach()和describe()的describe()。
类似这样的东西
describe ('A blah component', () =>
{
beforeEach(() => {
console.log('beforeEach')
})
describe(`tests`, () => {
before(() => {
console.log('before')
})
it('test 1, () => {
console.log('it')
})
})
}