我正在处理一些旧的遗留代码,并试图弄清楚是否可以正确测试或是否可以重构一个助手。我正在使用React 16.13.1,Typescript,Jest和Enzyme 3.11.0。
主应用程序文件和其他帮助程序使用一个公共帮助程序:
import { createBrowserHistory } from 'history'
export const history = createBrowserHistory({
basename: '/application'
})
我一直在阅读关于createBrowserHistory
的文章,除了主应用程序文件中的路由之外,我还没有看到它被使用过,所以我不确定这是否是最佳实践。
我为之添加测试的重定向助手看起来像:
const handleRedirectRoute = (): string => {
const { pathname } = history.location
if (pathname === 'some-random-path') {
return 'random-path'
}
return '/application'
}
问题:
1.更新为使用window.location
而不是history.location
安全吗?看起来history.location
和window.location
在应用程序运行时包含相同的path, href, etc.
。主要区别是相当标准的,历史记录是state
的React历史记录,而window.location
是窗口的状态。
1.如果升级到使用window.location
是不安全的,你如何模拟或测试这里使用的历史记录?我试过模拟browserHistory
,useHistory
和useLocation
。在测试中,模拟window.location
,useHistory
和useLocation
是不同的,更新一个不会更新另一个。
1.具体来说,在测试中,window.location
、useLocation
和useHistory
为什么不互相更新呢?在实际应用中似乎是这样的。
1条答案
按热度按时间gwbalxhn1#
我觉得自己没有猜到这一点有点傻,但下面是我如何使用
history.location
使测试工作的:不过,我还是很好奇:
1.历史记录帮助是否是最佳做法,或者什么是最佳做法?
1.将
history
更新为window
是否安全。1.为什么
window.location
、history
(来自createBrowserHistory
)、useLocation
和useHistory
在测试中没有特别地相互更新?