【发布时间】:2018-11-22 13:29:54
【问题描述】:
我有以下代码:
const App = () => {
return (
<Provider store={store}>
<PersistGate persistor={persistor} loading={<Text>Loading!</Text>}>
<ConnectedRootComponent />
</PersistGate>
</Provider>
);
};
export default App;
它使用 redux-persist 来重新水化状态,在完成之前,它会显示加载属性中的内容。我有一个 Jest 测试(只是开箱即用的 react native 附带的默认测试):
it('renders without crashing', () => {
const rendered = renderer.create(<App />).toJSON();
console.log("Rendering: " + JSON.stringify(rendered));
expect(rendered).toBeTruthy();
});
但虽然测试通过了,但我看到persist/PERSIST 和persist/REHYDRATE 的操作仍在发生,并且在测试中打印到控制台的值(呈现的输出)是:
{
"type": "Text",
"props": {
"accessible": true,
"allowFontScaling": true,
"ellipsizeMode": "tail"
},
"children": ["Loading!"]
}
我要做的是等到redux-persist完成水合,然后检查渲染值。我该怎么做?
【问题讨论】:
-
您可以向 persistStore 提供回调,该回调将在补液完成时调用。您可能必须相应地修改测试用例。请参考github.com/rt2zz/…
标签: reactjs react-native jestjs redux-persist