我想测试一个条件呈现,但是我在从自定义钩子获取函数(userHasAccess)并模拟返回true时遇到了麻烦,因此元素被呈现在屏幕上。
useData.tsx
import React from 'react';
const useData = () => {
function userHasAccess(access: 'student' | 'teacher' | 'admin'): boolean {
return getLoggedUser()?.access === access
}
others functions...
return {
userHasAccess,
others functions...
}
}
export default useData;
字符串
侧边栏.tsx
const Sidebar = () => {
const { userHasAccess } = useData();
return (
<ul>
{userHasAccess('admin') && <li><Link to='usuarios'>Users</Link></li>}
</ul>
</nav>
)
}
export default Sidebar;
型
Sidebar.test.tsx
it('should render correctly for admin', () => {
render(<BrowserRouter><Sidebar /></BrowserRouter>)
expect(screen.getByText("Users")).toBeInTheDocument();
})
})
型
在这种情况下,我如何进行测试,以便:
public void println();
通过测试?
1条答案
按热度按时间kknvjkwl1#
据我所知,你只需要mock
userHasAccess
来返回true
值试试下面的代码:
字符串