Pular para o conteúdo principal

<MockResolver />

function MockResolver<T>(props: {
children: React.ReactNode;
fixtures: (Fixture | Interceptor<T>)[];
getInitialInterceptorData: () => T;
}): JSX.Element;

<MockResolver /> permite carregar fixtures com facilidade para ver como diferentes respostas de rede podem ser. Isso é útil tanto para o storybook quanto para testes de componentes.

Argumentos​

fixtures​

(Fixture | Interceptor<T>)[]

Esta prop especifica as fixtures ou interceptors dos quais usar os dados. Cada item representa um fetch definido pelo Endpoint e pelos params. Result contém a resposta JSON esperada desse fetch.

getInitialInterceptorData​

Função que inicializa o atributo this de todos os interceptors.

<MockResolver
fixtures={[
{
endpoint: new RestEndpoint({
path: '/api/count/increment',
method: 'POST',
body: undefined,
}),
response() {
return {
count: (this.count = this.count + 1),
};
},
delay: () => 500 + Math.random() * 4500,
},
]}
getInitialInterceptorData={() => ({ count: 0 })}
>
{children}
</MockResolver>

Exemplo​

import { MockResolver } from '@data-client/test';
import type { Story } from '@storybook/react';

import ArticleResource from 'resources/ArticleResource';
import MyComponentToTest from 'components/MyComponentToTest';

const results = [
// fixture
{
endpoint: ArticleResource.getList,
args: [{ maxResults: 10 }] as const,
response: [
{
id: 5,
content: 'have a merry christmas',
author: 2,
contributors: [],
},
{
id: 532,
content: 'never again',
author: 23,
contributors: [5],
},
],
},
// interceptor
{
endpoint: ArticleResource.partialUpdate,
response: ({ id }, body) => ({
...body,
id,
}),
},
];

const Template: Story = () => (
<MockResolver fixtures={results}>
<MyComponentToTest />
</MockResolver>
);

export const MyStory = Template.bind({});