Как я могу сбросить переменную перед каждой итерацией? - PullRequest
3 голосов
/ 10 октября 2019

Я бы хотел настроить тесты для помощника.

Логика проста: перед каждым тестом я создаю новый элемент и применяю к нему свою функцию.

здесьсамая основная функция:

const myTest = (item) => {
   return item.valid ? 'ok' : 'ko'
}

const createItem = () => {
  return {
    name: 'myItem',
    valid: true,
  }
}

А вот тестовый файл

describe('products/checkStatus', () => {
  let item
  beforeEach(() => {
    item = createItem()
  })

  test('valid item', () => {
    expect(
      myTest(
        item,
      ),
    ).toBe('ok')
  })

  test('invalid item', () => {
    item.valid = false
    expect(
      myTest(
        item
      ),
    ).toBe('ko')
  })

  test('valid item again', () => {
    expect(
      myTest(
        item
      ),
    ).toBe('ok')
  })
})

Итак, первый и второй тест пройдут успешно, но третий не пройдёт, потому что считает, чтоitem.valid - это false.

Как так получается? Разве beforeEach не должен выполняться после каждого теста и, следовательно, получать свежий, действительный предмет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...