【发布时间】:2021-04-20 09:29:11
【问题描述】:
我想检查<ul> 中的所有链接是否都具有href 属性。
组件(使用 Gatsby 的 <Link>):
const DropdownMenu = ({ open }) => {
return (
<ul className="dropdown-menu">
{open && (
<>
<li>
<Link to="/link1/">Link 1</Link>
</li>
<li>
<Link to="/link2/">Link 2</Link>
</li>
<li>
<Link to="/link3/">Link 3</Link>
</li>
</>
)}
</ul>
)
}
呈现的 HTML:
...
<ul
class="dropdown-menu"
>
<li>
<a
href="/link1/"
>
Link 1
</a>
</li>
<li>
<a
href="/link2/"
>
Link 2
</a>
</li>
<li>
<a
href="/link3/"
>
Link 3
</a>
</li>
</ul>
...
测试:
test('links have href', () => {
render(<DropdownMenu open={true}></DropdownMenu>)
const listLinks = screen.getAllByRole('link')
expect(listLinks).toHaveAttribute('href')
})
输出:
received value must be an HTMLElement or an SVGElement.
Received has type: array
Received has value: [<a href="/link1/">Link 1</a>, <a href="/link2/">Link 2</a> ...]
有没有办法(比如map 或其他东西)检查所有元素是否有正确的href?
我可能在这里使用了错误的方法。
【问题讨论】:
标签: testing jestjs react-testing-library