我正在尝试为反应组件创建一个单元测试,其中组件的道具检查部分 url 路径以确定操作过程,并在路径的末尾接受参数或值。
使用https://testing-library.com/docs/example-reach-router中给出的示例,我创建了自己的单元测试,但是当我运行测试时,我的组件抱怨 uri 值不存在。此外,当我将 console.log(props) 添加到我的组件并再次运行测试时,props 是未定义的。
我尝试了一种使用 LocationProvider 包装我的组件的变体,添加了历史记录,如https://reach.tech/router/api/LocationProvider所示
相关的代码片段是 -
function renderWithRouter(
ui,
{ route = '/', history = createHistory(createMemorySource(route)) } = {}
) {
return {
...render(
<LocationProvider history={history}>{ui}</LocationProvider>
)
,
history,
}
}
describe('View Order Test', () => {
describe('Order', () => {
it('Renders the Order View for a specific Order', async () => {
const { queryByText } =
renderWithRouter(
<State initialState={initialState} reducer={reducer}>
<ViewOrder />
</State>
, { route: '/order/orderView/1234', }
)
expect(queryByText('OrderID: 1234'))
}
)
})
似乎没有任何效果。有没有办法将道具传递给一个单元中的 uri (@reach/router) 组件?正如我所说,我的单位是上面给出的那些的副本