Javascript 在摩卡咖啡中,在每个钩子之前执行钩子
我想在每个钩子之前创建一个钩子,该钩子在钩子之前执行 基本上,我想要以下行为:Javascript 在摩卡咖啡中,在每个钩子之前执行钩子,javascript,node.js,mocha.js,Javascript,Node.js,Mocha.js,我想在每个钩子之前创建一个钩子,该钩子在钩子之前执行 基本上,我想要以下行为: beforeEach(() => { console.log('beforeEach') }) describe('tests', () => { before(() => { console.log('before') }) it('test 1', () => { console.log('it') }) }) 我得到: before before
beforeEach(() => {
console.log('beforeEach')
})
describe('tests', () => {
before(() => {
console.log('before')
})
it('test 1', () => {
console.log('it')
})
})
我得到:
before
beforeEach
it
但我想要的结果是:
beforeEach
before
it
获得所需行为的正确结构是什么
解决方法
目前,我发现了一个解决方法,使用两个嵌套的beforeach:
beforeEach(() => {
console.log('beforeEach1')
})
describe('tests', () => {
beforeEach(() => {
console.log('beforeEach2')
})
it('test 1', () => {
console.log('it')
})
})
哪个输出是:
beforeEach1
beforeEach2
it
可以使用包含beforeach()和descripe()的descripe()
像这样的
describe ('A blah component', () =>
{
beforeEach(() => {
console.log('beforeEach')
})
describe(`tests`, () => {
before(() => {
console.log('before')
})
it('test 1, () => {
console.log('it')
})
})
}
我不确定这一点(我还没有测试过),但从测试结果来看,您的根级别在每次测试之前可能都不符合您的想法
...
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
...
从上图中,您可以看到,对于每个descripe
调用根级前钩子之前的。只需在每个
之前在之前的中旋转根级别,就可以解决这个问题
一般的规则是,
before
回调总是在beforeach
回调之前(没有双关语)出现,与它们定义的级别无关。谢谢,不幸的是,我得到了相同的行为:beforeach>它
摩卡有一个隐含的descripe
块。这样你只添加了一个空关卡。谢谢,我确实检查了文档。问题是,我需要一个应该为每个测试执行的通用beforeach(创建每个测试所需的通用数据库模式)。每个测试都有一个特定的“before”,用于在数据库中设置不同的情况。您描述了您使用“变通方法”所做的工作,为什么它在您的情况下不正确?或者我遗漏了什么?因为beforeach2应该在单个测试之前执行一次(这个测试非常简单,但可能存在其他更复杂的测试)。另外,对于其他贡献者来说,语法也很混乱。我认为它会为我的案例提供一个清晰正确的结构,你不必担心混淆其他贡献者。这是摩卡开发者选择遵循的逻辑,你完全坚持它,没有更清晰的解决方案。您自己解决了。最终找到了类似的问题,并提供了更多详细信息:。似乎真的很有限