Testes e Performance

Esta página aborda estratégias de teste para aplicações Redux/RTK Query e técnicas de otimização de desempenho.

Testando Slices do Redux

Testes Básicos de Reducer

// user.slice.test.ts
import reducer, { userLoggedIn, userLoggedOut } from './user.slice';

describe('user slice', () => {
  const initialState = {
    account: null,
    isAuthenticated: false,
  };

  it('should handle userLoggedIn', () => {
    const account = '0x123...';
    const actual = reducer(initialState, userLoggedIn({ account }));
    
    expect(actual.account).toBe(account);
    expect(actual.isAuthenticated).toBe(true);
  });

  it('should handle userLoggedOut', () => {
    const loggedInState = {
      account: '0x123...',
      isAuthenticated: true,
    };
    
    const actual = reducer(loggedInState, userLoggedOut());
    
    expect(actual.account).toBeNull();
    expect(actual.isAuthenticated).toBe(false);
  });
});

Testando Entity Adapters

Testando Selectors

Selectors Simples

Seletores Memoizados

Testando RTK Query com MSW

Configurar MSW

Testando Queries

Testando Mutations

Testando Atualizações Otimistas

Otimização de Desempenho

Use selectFromResult para Prevenir Re-renderizações

Evite Selecionar o Estado Inteiro

Memoizar Selectors Custosos

Use Entity Adapters para Dados Normalizados

Ajustar Configurações de Cache do RTK Query

Pré-carregamento para Melhor UX

Estratégia de Polling

Redux DevTools

Habilitar em Desenvolvimento

Sanitizador de Ações

Sanitizar dados sensíveis no DevTools:

Lista de Verificação de Boas Práticas

Desempenho

Testes

Qualidade de Código

Anti-padrões a Evitar

triangle-exclamation

Monitorando Desempenho

Rastrear Chamadas de Selector

Monitorar Re-renders

Próximos Passos

Atualizado