Pular para o conteúdo
Skillpedia
Testes40 mil · #5404

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

https://github.com/github/awesome-copilot/blob/main/skills/unit-test-vue-pinia/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/github/awesome-copilot/blob/main/skills/unit-test-vue-pinia/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
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-pinia

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/github/awesome-copilot/main/skills/unit-test-vue-pinia/SKILL.md -o SKILL.md
Conteú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

  1. Identifique primeiro o limite do comportamento: comportamento da UI do componente, comportamento do composable ou comportamento do store.
  2. Escolha o estilo de teste mais restrito que possa provar esse comportamento.
  3. Configure o Pinia com a opção menos poderosa que ainda cubra o cenário.
  4. 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.
  5. Afirme as saídas observáveis e os efeitos colaterais antes de considerar qualquer afirmação em nível de instância.
  6. 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.vm apenas 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.md como 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: ... }) ou createTestingPinia({ stubActions: ... }) sem createSpy, 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

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas