Jest-тест с использованием act-test-renderer вставляет неопределенное значение атрибута в DOM

Я кратко попытался найти это в исходном коде реагировать-тестировать-рендерер, но не смог найти его.

Напомним, что в React атрибуты элементов компонента, значения которых undefined не отображаются в DOM. Т.е. дано bat = undefined а также <Foo bar={bat} />, bar атрибут не появится в сгенерированном HTML.

Я предполагаю, что это ожидаемое поведение, но я запутался, почему, когда дополнительный атрибут компонента появляется в дереве JSON в снимке Jest - если снимок просто подтверждает, что свойство не указано (ws-automation-id является необязательным свойством компонента, которое не имеет defaultProps запись определена):

exports[`the <TextButton/> component should use the specified class names 1`] = `
<button
  className="gc-icon test-class1 test-class2"
  onClick={[Function]}
  ws-automation-id={undefined}
>
  Button Text
</button>
`;

Дано

test('should use the specified class names', () => {
  const tree = create(<TextButton buttonText="Button Text" onClick={null} classNames={['test-class1', 'test-class2']} />).toJSON()
  expect(tree).toMatchSnapshot()
})

2 ответа

Решение

Я забыл опубликовать версию, которая использовалась на момент публикации. Эта проблема была исправлена, однако, неясно, какая именно версия.

Это ожидается.

По сути, этот пакет позволяет легко получить снимок иерархии представления платформы (аналогично дереву DOM), отображаемой компонентом React DOM или React Native, без использования браузера - React Test Renderer

Это не совсем дерево DOM, которое вы увидите при просмотре в браузере, скорее объект javascript, представляющий нечто подобное.

Другие вопросы по тегам