Git Product home page Git Product logo

componenttesting's Introduction

O Teste é uma espectativa que temos para o retorno Uma forma de organização de arquivos de testes

.spec - para testes unitarios .test - para testes de integração

  • Para testes unitarios utilizamos o Jest (testa um componente unitario)

  • Para testes de intengração (testa 2 ou mais componentes que são usado juntos)

  • Para testes E2E - são testes com fluxos complexos e com API e banco de dados reais

Jest

Configuração com Vite + Jest

como utilizei o vite precisei fazer algumas configurações
  • npm install --save-dev jest @types/jest ts-jest
  • criar um arquivo de configuração Jest na raiz "jest.config.cjs" - pegar o exemplo desse projeto
  • adicionar no package.json no script {"teste": "jest"} - pegar o exemplo desse projeto

Configurando Vite com testing-library

  • npm install --save-dev @testing-library/react
  • também é necessario instalar o npm install --save-dev jest-environment-jsdom

Exemplo simples de teste unitario

Um exemplo simples de teste, criado na src -> pages -> App.test.tsx
const sum = (x: number, y: number) => {
    return x + y
}

describe('App Component', () => { //nome do componente testado
    it('deveria somar corretamente', () => {  // descrição da expectativa
        expect(sum(4, 4)).toBe(8) //expectativa o retorno da função seja 8
    })
})


Exemplo de teste com botão que renderiza um novo texto


    it('deveria alterar a mensagem quando clicar no botão', () => {
        render(<ComponenteTeste />)

        screen.getByText("mensagem não alterada")

        const button = screen.getByText(/mensagem do botao/i) //criando ação de click

        fireEvent.click(button)

        screen.getByText("mensagem foi alterada")
    })

esse ToBe é um 'matchers' do Jest utilizado para verificar Link matchers

Problemas enfrentados (resolvidos):

- O jest reconhece os arquivos css como javascrit e da erro quando tenta compilar, para resolver necessita criar uma pasta de mock e colocar um arquivo css vazio e passar uma nova configuração pro jest.config

  "moduleNameMapper": { //configuração responsavel por pegar sempre o css vazio e nao dar conflito
    "\\.(css|less|scss)$": "<rootDir>/src/pages/__mocks__/App.css"
  }

Pra não precisar ficar rodando o comando e verificando, uma boa forma de ver os testes é com o

"test": "jest --watch"

assim vc consegue deixar o jest observando toda vez que o arquivo for salvo

componenttesting's People

Contributors

guilbertoliveira avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.