gpt4 book ai didi

javascript - 如何使用 Jest 检查元素是否可见?

转载 作者:行者123 更新时间:2023-12-05 00:27:41 24 4
gpt4 key购买 nike

我有一个直截了当的 react-comp。我想根据 react 状态测试样式。组合如下所示:
react 比较。

const Backdrop = ({ showBackdrop }) => {
const backdropRef = useRef();

function getBackdropHeight() {
if (typeof window !== 'undefined') {
return `calc(${document.body.clientHeight}px -
${backdropRef.current?.offsetTop || 0}px)`;
}

return 0;
}

return (
<div
data-testid="backdrop"
className={classNames(styles.backdrop, showBackdrop ? styles.show : styles.hide)}
ref={backdropRef}
style={{ height: getBackdropHeight() }}
/>
);
};
造型
.backdrop {
width: 100%;
position: absolute;
left: 0;
right: 0;
top: 156px;
background-color: rgba(0, 0, 0, 0.7);
z-index: 3;
...
}

.show {
opacity: 0;
visibility: hidden;
transition: visibility 0.25s, opacity 0.25s ease-out;
}

.hide {
opacity: 1;
visibility: hidden;
transition: opacity 0.25s ease-in;
}
我总是从测试中得到的错误是,元素是可见的:
Received element is visible:
<div class="backdrop hide" data-testid="backdrop" style="height: calc(0px -
0px);" />

21 | const { getByTestId } = renderWithIntl(<Backdrop showBackdrop={false} />);
22 |
> 23 | expect(getByTestId('backdrop')).not.toBeVisible();
| ^
24 | });
25 | });
26 |
测试
it("should not render visible backdrop on falsy state", () => {
const { getByTestId } = render(<Backdrop showBackdrop={false} />);

expect(getByTestId('backdrop')).not.toBeVisible();
});
在不使用 react 内联样式的情况下如何使元素不可见的任何方法!?

最佳答案

您可以使用toBeVisible()来自 RTL 的功能。
在这里你有文档:
https://github.com/testing-library/jest-dom#tobevisible
例子:

// element should not be visible on screen
expect(screen.queryByText('1')).not.toBeVisible();

关于javascript - 如何使用 Jest 检查元素是否可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64026278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com