开玩笑,React 测试组件不存在

pmi*_*nda 3 jestjs react-testing-library

我有这个测试:

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

expect(rendered.getByTestId('reasonInput')).toBeNull();
Run Code Online (Sandbox Code Playgroud)

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

那么我如何测试该组件是否存在?

Est*_*ask 12

正如参考getByTestId文献所述,和之间的区别queryByTestId在于,如果没有匹配元素,前者会抛出错误:

getBy* 查询返回查询的第一个匹配节点,如果没有元素匹配或找到多个匹配项,则抛出错误(请改用 getAllBy)。

queryBy* 查询返回查询的第一个匹配节点,如果没有元素匹配则返回 null。这对于断言不存在的元素很有用。如果找到多个匹配项,则会抛出此错误(请改用 queryAllBy)。

它应该是:

expect(rendered.queryByTestId('reasonInput')).toBeNull();
Run Code Online (Sandbox Code Playgroud)