В модульных тестах пакет маршрутизатора или withRouter
не имеет никакого значения, поскольку мы тестируем только компонент.
Чтобы исправить это, вместо экспорта упакованного компонента вы можете экспортировать отдельный компоненттоже:
import { withRouter } from 'next/router';
export class Order extends React.Component {
constructor(props) {
super(props)
}
render() {
const { onToken } = this.props.router.query;
return (
.......
);
}
}
export default withRouter(Order);
и используйте этот экземпляр для модульного тестирования.
import { Order, SINGLE_ORDER_QUERY } from '../components/Order';
import { fakeOrder } from '../lib/testUtils';
const mocks = [
{
request: { query: SINGLE_ORDER_QUERY, variables: { id: 'ord123' } },
result: { data: { order: fakeOrder() } },
},
];
describe('<Order/>', () => {
it('renders the order', async () => {
const router = {
query: {
onToken: 1 // Whatever value you want to provide it
}
}
const wrapper = mount(
<MockedProvider mocks={mocks}>
<Order id="ord123" router={router} />
</MockedProvider>
);
await wait();
wrapper.update();
const order = wrapper.find('div[data-test="order"]');
expect(toJSON(order)).toMatchSnapshot();
});
});