Jest, React-тестирование компонента не существует

У меня есть такой тест:

const rendered = render(
  <TransactionReason
    reason={{ code: defaultReason }}
  />
);

expect(rendered.getByTestId('reasonInput')).toBeNull();

Я пытаюсь сделать следующее: есть компонент с testID = 'reasonInput', но этот компонент не отображается, когда свойство reason имеет то значение, которое я даю (код: defaultReason). Но я получаю сообщение об ошибке, потому что Jest не может найти этот идентификатор, конечно, он не отображается. Я думал, что это приведет к ложному или нулевому значению, поэтому я попытался использовать toBeNull или toBeFalsy или что-то в этом роде.

Как я мог тогда проверить отсутствие этого компонента?


person pmiranda    schedule 23.09.2020    source источник


Ответы (1)


Как указано в справочнике, разница между getByTestId и queryByTestId заключается в том, что первый выдает ошибку, если нет подходящего элемента:

Запросы getBy * возвращают первый совпадающий узел для запроса и выдают ошибку, если ни один элемент не соответствует или если найдено более одного совпадения (вместо этого используйте getAllBy).

Запросы queryBy * возвращают первый совпадающий узел для запроса и возвращают ноль, если ни один элемент не соответствует. Это полезно для утверждения элемента, которого нет. Это срабатывает, если найдено более одного совпадения (вместо этого используйте queryAllBy).

Должен быть:

expect(rendered.queryByTestId('reasonInput')).toBeNull();
person Estus Flask    schedule 23.09.2020