У меня проблемы с тестированием компонента HoC, который выполняет gql-запрос и добавляет результат как опору.Компонент работает, потому что я тестировал его вручную, но у меня возникают проблемы с издевательством над запросом.Это версия apollo до 2.5, поэтому другие запросы @client работают.
Это мой Hoc
export const GET_CONFIG = gql`
{
config @client,
}
`;
/**
* This HoC wraps a component adding to it the current site configuration stored in Apollo.
* It should be used for every component which needs to access the configuration.
*
* @param Component
* @returns The Component wrapped with the config prop
*/
export const withConfig = Component => props => (
<Query
query={GET_CONFIG}
>
{({loading, error, data}) => {
console.log(data);
return (
<Component config={JSON.parse(data.config)} {...props} />
);
}
}
</Query>
);
testComponent
const TestComponent = () => (
<div>test</div>
)
export default withConfig(TestComponent);
мой тест:
describe('withConfig', () => {
const mockData = () => [
{
request: {
query : GET_CONFIG
},
result: {
data: {
config: 'jjjjjjj',
},
},
},
];
it('should pass extra props to provided component', async () => {
const wrapper = renderer.create(
<MockedProvider mocks={mockData()} addTypename={false}>
<TestComponent />
</MockedProvider>,
);
await wait(0);
expect(wrapper.toJSON()).toMatchSnapshot();
});
});
Проблема в том, что смоделированный запрос не 'не возвращает ожидаемое «ggggg», но возвращает пустой объект, поэтому тест завершается неудачно с ошибкой синтаксического анализа JSON
SyntaxError: Unexpected token u in JSON at position 0
at JSON.parse (<anonymous>)
23 | console.log(data);
24 | return (
> 25 | <Component config={JSON.parse(data.config)} {...props} />
| ^
26 | );
27 | }
28 |
Есть идеи?