【发布时间】:2020-02-10 09:49:42
【问题描述】:
我正在尝试在我的测试中设置一个 cookie,以确保它在我的组件中被清除:
import Cookies from 'universal-cookie';
test('successfully logs the user out', async () => {
const cookie = new Cookies()
cookie.set('authtoken', 'some-token')
const { getByText } = render(<Logout/>)
})
但在我的注销组件中,cookies 对象是空的:
export default function Logout() {
const [cookies, setCookie, removeCookie] = useCookies(['authtoken'])
console.log(cookies)
}
还有其他方法可以做到这一点吗?最好不要将 cookie 作为道具传递。
【问题讨论】:
-
我不知道这两个包的内部工作原理,但您似乎正在尝试使用 2 个不同的 cookie 包;反应饼干和通用饼干。如果您使用的是 ssr,请使用第一个,否则使用第二个。您还有更多可能有帮助的上下文吗?
-
@Devin 一个包依赖于另一个包。我认为这真的是一个
react-cookie的问题。 -
react cookie 中的 cookie 是根据上下文提供的。是否可能因为未呈现 cookie 提供程序而未提供您的 cookie?文档示例 export default function Root() { return (
); } -
@Devin 我也尝试将
<CookiesProvider>放入render方法中。但仍然没有骰子。
标签: reactjs react-cookie