我有这个测试:
const rendered = render(
<TransactionReason
reason={{ code: defaultReason }}
/>
);
expect(rendered.getByTestId('reasonInput')).toBeNull();
我想做的是:有一个具有testID = 'reasonInput'
的组件,但是当reason
道具具有我要提供的值时,该组件不会呈现(代码: defaultReason)。但是我收到了一个错误,因为Jest找不到该ID,因此没有被渲染。我认为这会产生错误或空值,这就是为什么我尝试使用toBeNull
或toBeFalsy
或类似的东西的原因。
然后我该如何测试该组件的不存在?
答案 0 :(得分:0)
the reference指出,getByTestId
和queryByTestId
之间的区别在于,如果没有匹配的元素,前者会引发错误:
getBy *查询返回查询的第一个匹配节点,并抛出 如果没有元素匹配或找到多个匹配项,则返回错误(使用 getAllBy代替。)
queryBy *查询返回查询的第一个匹配节点,并且 如果没有元素匹配,则返回null。这对于断言一个 不存在的元素。如果有多个比赛,则抛出 找到(改为使用queryAllBy)。
应该是:
expect(rendered.queryByTestId('reasonInput')).toBeNull();