Kos*_*han 8 reactjs apollo-client react-testing-library
我需要一些帮助。我是阿波罗客户端反应变量的新手。有一个组件,消息的显示取决于本地状态(apollo 缓存)中的值的变量。在测试将不同值传递到该变量的组件期间,模拟 apollo 缓存将如何?
消息.tsx
const Message: FC = ({ children }) => {
const message = useReactiveVar(messageVar);
return (
<>
{!!message && (
<Alert>
<Typography className={classes.title}>
Due to scheduled data updates...
</Typography>
</Alert>
)}
{children}
</>
);
};
Run Code Online (Sandbox Code Playgroud)
缓存.ts
export const cache: InMemoryCache = new InMemoryCache({
typePolicies: {
Query: {
fields: {
maintenanceMessage: {
read() {
return messageVar();
},
},
},
},
},
});
const maintenanceMessageVar = makeVar<null>(null)
Run Code Online (Sandbox Code Playgroud)
消息.test.tsx
it('render message', () => {
const { getByText } = render(
<MockedProvider
mocks={mock}
cache={cache}
addTypename={true}
>
<Message>
<h4>Header</h4>
</Message>
</MockedProvider>,
);
getByText('Due to scheduled data updates...');
});
Run Code Online (Sandbox Code Playgroud)
小智 2
您可以在渲染组件之前设置这些反应变量。
例如:
it('render message', () => {
messageVar(true);
const { getByText } = render(
<MockedProvider
mocks={mock}
cache={cache}
addTypename={true}
>
<Message>
<h4>Header</h4>
</Message>
</MockedProvider>,
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1801 次 |
| 最近记录: |