unit-test-vue-pinia
Escreve e revisa testes unitários para projetos Vue 3 com TypeScript, Vitest e Pinia.
O que ela faz
Esta ferramenta ajuda a criar e revisar testes para partes específicas do seu código Vue. Ela garante que os testes sejam simples, confiáveis e focados no comportamento que você quer testar.
Quando usar
- ✓Ao criar novos testes para componentes, funções ou 'stores' (onde os dados são guardados).
- ✓Ao atualizar testes existentes para garantir que continuam funcionando.
- ✓Quando você quer ter certeza de que uma parte do seu código funciona como esperado, sem se preocupar com os detalhes internos.
Exemplo do que pedir para a IA
“Escreva um teste para o componente de login que verifica se o usuário pode fazer login com credenciais válidas.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta analisa o comportamento que você quer testar, configura as ferramentas necessárias (como Pinia para gerenciar dados) e verifica se o resultado é o esperado. Ela foca no que o usuário vê e interage, não em como o código funciona por dentro.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add github/awesome-copilot --skill unit-test-vue-piniaOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/unit-test-vue-pinia/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
unit-test-vue-pinia
Use esta habilidade para criar ou revisar testes unitários para componentes Vue, composables e stores Pinia. Mantenha os testes pequenos, determinísticos e focados no comportamento.
Fluxo de Trabalho
- Identifique primeiro o limite do comportamento: comportamento da UI do componente, comportamento do composable ou comportamento do store.
- Escolha o estilo de teste mais restrito que possa provar esse comportamento.
- Configure o Pinia com a opção menos poderosa que ainda cubra o cenário.
- Conduza o teste através de entradas públicas, como props, atualizações de formulário, cliques de botão, eventos de filho emitidos e APIs de store.
- Afirme as saídas observáveis e os efeitos colaterais antes de considerar qualquer afirmação em nível de instância.
- Retorne ou revise os testes com nomes claros orientados ao comportamento e observe quaisquer lacunas de cobertura restantes.
Regras Principais
- Teste um comportamento por teste.
- Afirme o comportamento de entrada/saída observável primeiro (texto renderizado, eventos emitidos, chamadas de callback, alterações de estado do store).
- Evite afirmações acopladas à implementação.
- Acesse
wrapper.vmapenas em casos excepcionais quando não houver uma afirmação razoável em nível de DOM, prop, emit ou store. - Prefira configuração explícita em
beforeEach()e reinicie os mocks a cada teste. - Use o material de referência verificado em
references/pinia-patterns.mdcomo fonte local da verdade para configurações padrão de testes Pinia.
Abordagem de Teste Pinia
Use references/pinia-patterns.md primeiro, depois recorra ao cookbook de testes do Pinia quando os exemplos verificados não cobrirem o caso.
Padrão padrão para testes de componentes
Use createTestingPinia como um plugin global ao montar.
Prefira createSpy: vi.fn como padrão para consistência e afirmações de spy de ação mais fáceis.
const wrapper = mount(ComponentUnderTest, {
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
}),
],
},
});
Por padrão, as ações são stubadas e espionadas.
Use stubActions: true (padrão) quando o teste apenas precisar verificar se uma ação foi chamada (ou não chamada).
Configurações mínimas de Pinia aceitas
As seguintes também são válidas e não devem ser sinalizadas como incorretas:
createTestingPinia({})quando o teste não afirma o comportamento do spy de ação Pinia.createTestingPinia({ initialState: ... })oucreateTestingPinia({ stubActions: ... })semcreateSpy, quando o teste apenas precisa de semeadura de estado ou comportamento de stub de ação e não inspeciona spies gerados.setActivePinia(createTestingPinia(...))em testes focados em store/composable (sem montar um componente) quando a semeadura/mock de stores dependentes for necessária.
Use createSpy: vi.fn quando as afirmações de spy de ação fizerem parte da intenção do teste.
Execute ações reais apenas quando necessário
Use stubActions: false apenas quando o teste precisar validar o comportamento real e os efeitos colaterais da ação. Não o ative por padrão para simples afirmações de "foi chamado".
const wrapper = mount(ComponentUnderTest, {
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
stubActions: false,
}),
],
},
});
Semeie o estado do store com initialState
const wrapper = mount(ComponentUnderTest, {
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
initialState: {
counter: { n: 20 },
user: { name: "Leia Organa" },
},
}),
],
},
});
Adicione plugins Pinia através de createTestingPinia
const wrapper = mount(ComponentUnderTest, {
global: {
plugins: [
createTestingPinia({
createSpy: vi.fn,
plugins: [myPiniaPlugin],
}),
],
},
});
Padrão de substituição de getter para casos extremos
const pinia = createTestingPinia({ createSpy: vi.fn });
const store = useCounterStore(pinia);
store.double = 999;
// @ts-expect-error test-only reset of overridden getter
store.double = undefined;
Testes unitários puros de store
Prefira testes puros de store com createPinia() quando o objetivo for validar transições de estado do store e comportamento de ação sem renderização de componente. Use createTestingPinia() apenas quando precisar de stores dependentes stubados, doubles de teste semeados ou spies de ação.
beforeEach(() => {
setActivePinia(createPinia());
});
it("increments", () => {
const counter = useCounterStore();
counter.increment();
expect(counter.n).toBe(1);
});
Abordagem Vue Test Utils
Siga as orientações do Vue Test Utils: https://test-utils.vuejs.org/guide/
- Monte superficialmente por padrão para testes unitários focados.
- Monte árvores de componentes completas apenas quando o comportamento de integração for o assunto.
- Conduza o comportamento através de props, interações semelhantes às do usuário e eventos emitidos.
…
Perguntas frequentes
O que são 'testes unitários'?
São pequenos testes que verificam se uma única parte do seu código (como um componente ou uma função) funciona corretamente de forma isolada.
O que é Pinia?
É uma ferramenta usada em Vue.js para gerenciar o estado (dados) da sua aplicação de forma organizada.
Por que focar no 'comportamento' e não nos 'detalhes internos'?
Testar o comportamento garante que a funcionalidade principal funciona para o usuário. Testar detalhes internos pode fazer os testes quebrarem se você mudar a forma como o código funciona internamente, mesmo que o resultado final seja o mesmo.
Detalhes
Descrição original do autor
Write and review unit tests for Vue 3 + TypeScript + Vitest + Pinia codebases. Use when creating or updating tests for components, composables, and stores; mocking Pinia with createTestingPinia; applying Vue Test Utils patterns; and enforcing black-box assertions over implementation details.
repo: github/awesome-copilot
Popularidade
- Estrelas no GitHub
- 40 mil
- Posição no ranking
- #5404
- Licença
- MIT
- Atualizada em
- 15/10/2026
Comentários
- …
Mais skills deste repositório
acquire-codebase-knowledge
Ajuda seu agente a entender e documentar um projeto de código existente. É útil para novas pessoas entrarem no projeto ou para ter uma visão geral da arquitetura.
github/awesome-copilot
acreadiness-assess
Faz seu agente avaliar a prontidão de um projeto para IA e gerar um relatório. É útil para entender o quão bem um projeto está preparado para usar ferramentas de IA.
github/awesome-copilot
acreadiness-generate-instructions
Ajuda seu agente a criar instruções para ferramentas de IA baseadas em uma avaliação. É útil para melhorar a forma como a IA interage com o código e fecha lacunas identificadas.
github/awesome-copilot
acreadiness-policy
Faz seu agente ajudar a definir ou aplicar políticas para avaliação de projetos de IA. É útil para padronizar a forma como os projetos são avaliados e garantir conformidade.
github/awesome-copilot
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC