我有一个简单的测试,如下所示:
const { getByTestId } = renderWithStore(
<ThemeProvider theme={{}}>
<ButtonContainer {...baseProps} />
</ThemeProvider>,
);
renderWithStore
的写法如下:
function renderWithStore(
ui,
{ initialState = {}, store = configureStore, ...renderOptions } = {},
) {
function Wrapper({ children }) {
return <Provider store={store}>{children}</Provider>;
}
return render(ui, { wrapper: Wrapper, ...renderOptions });
}
// override render method
export { renderWithStore, configureStore };
configureStore
就像这样:
const configureStore = (): Store<any> => {
const client: Middleware = Client(Rest);
const middlewares = [error(handler), thunk, client, analytics()];
const enhancer: StoreEnhancer<AppState> = applyMiddleware(...middlewares);
const localEnhancer: StoreEnhancer<AppState> = composeWithDevTools({
name: 'React Add-In',
port: 8000,
secure: true,
realtime: true,
})(enhancer as any) as any;
let localState: string;
let persistedState = JSON.parse(localState);
const store = createStore<AppState>(
reducers,
localState,
localEnhancer,
);
return store;
};
export default configureStore();
我面临的问题是baseProps
不断被initialState
产生的store
值覆盖,我不确定为什么。有没有办法让我可以通过道具进行单元测试?