Это лучшая практика для определения оболочки вне теста / это в шутку? - PullRequest
0 голосов
/ 23 сентября 2018

Какая лучшая практика и почему?-

Это я определяю оболочку внутри каждого из тестов

it('renders correctly', () => {
    const wrapper = shallow(<App.WrappedComponent />);
    expect(wrapper).toMatchSnapshot();
});

it('tests something else', () => {
    const wrapper = shallow(<App.WrappedComponent />);
    const title = wrapper.find('AppTitle');
    expect(title.childAt(2).text()).toBe('React App!');
});

или

Этот я определяю оболочку вне каждого из тестов

const wrapper = shallow(<App.WrappedComponent />);
it('renders correctly', () => {
    expect(wrapper).toMatchSnapshot();
});

it('tests something else', () => {
    const title = wrapper.find('AppTitle');
    expect(title.childAt(2).text()).toBe('React App!');
});

Просто интересно, есть ли какие-то проблемы с памятью и т. Д., Определяя ее вне тестов.

1 Ответ

0 голосов
/ 23 сентября 2018

Тестовый код следует тем же принципам, что и другой код.В частности, вы не должны повторяться без необходимости.

Вы можете использовать beforeEach для воссоздания объектов, необходимых для каждого теста.Теперь давайте рассмотрим некоторые плюсы и минусы альтернативы, которую вы нам показали:

Плюсы:

  • Легко читается, только одно центральное определение (относится к beforeEach иbeforeAll также)
  • Если создание вашей обертки требует больших вычислительных ресурсов, это может быть быстрее (это следует проверить)

Минусы:

  • Еслиу вашего обертки есть какое-то состояние, один тест может изменить его и передать другим тестам, это, вероятно, вам не подходит в вашем наборе тестов
  • Если обертка используется не во всех тестах, вы дольше удерживаете ее в памятичем необходимо (сборщик мусора не сможет его собрать), что фактически увеличивает использование памяти.Если вы выполняете только несколько быстрых тестов, это может быть незначительным.

Моя личная рекомендация для общих сценариев модульного тестирования с минимальным количеством предположений: заново создайте свои SUT (испытуемые объекты) длякаждый тест по методу beforeEach.

Это сведет к минимуму перекрестное взаимодействие между тестами, и вы определяете его только в одном месте.

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