68
loading...
This website collects cookies to deliver better user experience
render()
padrão do RTL, pelo render da biblioteca, no caso do Redux, renderWithRedux()
.render()
para testes da biblioteca não vem pronto, devemos criá-lo como uma função. Fazendo isso, basta chamar essa função antes dos testes e pronto, podemos trabalhar o RTL normalmente.renderWithRedux()
recebe dois parâmetros, o primeiro é o componente que queremos renderizar e o segundo é uma desconstrução de objeto representando um Store. Dessa forma podemos criar um Store apenas para o ambiente de testes e manipulá-lo livremente.createStore()
, essa que recebe por parâmetro o reducer e o initialState.renderWithRedux()
deve ser um objeto de duas chaves, a primeira chave representa a desconstrução de um componente renderizado através da função render()
padrão, sendo que esse componente deve estar “encapsulado” pelo componente Provider.const renderWithRedux = (
component,
{ initialState, store = createStore(reducer, initialState) } = {}
) => {
return {
...render(
<Provider store={store}>
{component}
</Provider>
),
store,
};
};
createStore(),
chamada no parâmetro da função renderWithRedux()
, caso utilizemos um combineReducer em nossa Store original da aplicação, devemos utilizá-lo no parâmetro também.const renderWithRedux = (
component,
{
initialState,
store = createStore(combineReducers({ myReducer }), initialState),
} = {}
) => {
return {
...render(
<Provider store={store}>
{component}
</Provider>
),
store,
};
};
renderWithRedux()
, sendo que a maior diferença se dá na criação da Store personalizada para os testes, onde além de precisarmos passar o estado inicial e o Reducer, também é necessário passar o Redux-Thunk através do applyMiddleware()
.applyMiddleware()
. Também é interessante frisar que podemos dividir a função em mais pedaços, ou não.const renderWithRedux = (
component,
{
initialState,
store = createStore(
combineReducers({ reducer }),
initialState,
applyMiddleware(thunk)
),
} = {}
) => ({
...render(
<Provider store={store}>
{component}
</Provider>
),
store,
});
const createMockStore = (initialState) =>
createStore(
combineReducers({ reducer }),
initialState,
applyMiddleware(thunk)
);
const renderWithRedux = (
component,
{ initialState, store = createMockStore(initialState) } = {}
) => ({
...render(
<Provider store={store}>
{component}
</Provider>
),
store,
});
renderWithRuterAndRedux()
consiste em uma função com dois parâmetros, o primeiro parâmetro é obrigatório e consiste no componente que desejamos renderizar.const renderWithRouterAndRedux = (
component,
{
initialState = {},
store = createStore(rootReducers, initialState),
initialEntries = ['/'],
history = createMemoryHistory({ initialEntries }),
} = {},
) => ({
...render(
<Router history={ history }>
<Provider store={store}>
{component}
</Provider>
</Router>
),
history,
store,
});