【问题标题】:Jest, React testing a component not exist开玩笑,React 测试组件不存在
【发布时间】:2021-01-09 05:13:43
【问题描述】:

我有这个测试:

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

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

我要做的是:有一个组件具有testID = 'reasonInput',但是当reason 属性具有我给出的值时,该组件不会呈现(代码:defaultReason)。但是我得到一个错误,因为 Jest 找不到那个 id,当然,没有渲染。我认为这会产生 false 或 null 值,这就是为什么我尝试使用 toBeNulltoBeFalsy 或类似的东西。

然后我如何测试该组件的不存在?

【问题讨论】:

    标签: jestjs react-testing-library


    【解决方案1】:

    正如the reference 所说,getByTestIdqueryByTestId 的区别在于,如果没有匹配的元素,前者会抛出错误:

    getBy* 查询返回查询的第一个匹配节点,并抛出 如果没有元素匹配或找到多个匹配项(使用 getAllBy 代替)。

    queryBy* 查询返回查询的第一个匹配节点,并且 如果没有元素匹配,则返回 null。这对于断言 不存在的元素。如果不止一场比赛,这会抛出 找到(改用 queryAllBy)。

    应该是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 2019-11-22
      • 2015-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多