Выполнить BeforeEach Hook before Before Hook в Мокко - PullRequest
2 голосов
/ 28 мая 2019

Я хочу создать 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

Ответы [ 2 ]

1 голос
/ 28 мая 2019

Я не уверен в этом (я не проверял это), но из 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 вызывается предварительный хук на уровне корня before.Просто включите свой корневой уровень beforeEach в before, и это должно быть решено.

Общее правило состоит в том, что обратный вызов before всегда идет "раньше" (без каламбура) обратного вызова beforeEachнезависимо от уровня, в котором они определены.

0 голосов
/ 28 мая 2019

Вы можете использовать description (), у которого есть beforeEach () и description () внутри него.

Примерно так:

describe ('A blah component', () => 
{
  beforeEach(() => {
    console.log('beforeEach')
  })

   describe(`tests`, () => {
     before(() => {
       console.log('before')
     })

     it('test 1, () => {
       console.log('it')
     })
   })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...