Estou tentando usar o linter ESLint com a estrutura de teste Jest.
Os testes de brincadeira são executados com algumas coisas globais jest
, das quais precisarei falar ao linter; mas o mais complicado é a estrutura de diretórios. Com o Jest, os testes são incorporados ao código-fonte em__tests__
pastas; portanto, a estrutura de diretórios se parece com:
src
foo
foo.js
__tests__
fooTest.js
bar
bar.js
__tests__
barTest.js
Normalmente, eu teria todos os meus testes em um único diretório e poderia adicionar um .eslintrc
arquivo lá para adicionar os globais ... mas certamente não quero adicionar um .eslintrc
arquivo a todos__test__
diretório.
Por enquanto, acabei de adicionar os globais de teste ao global .eslintrc
arquivo , mas como isso significa que agora eu poderia fazer referênciajest
códigos que não são de teste, isso não parece a solução "certa".
Existe uma maneira de fazer com que o eslint aplique regras com base em algum padrão baseado no nome do diretório ou algo assim?
fonte
eslint-test
arquivo com uma glob, por exemploeslint **/__tests__/*.js -c eslint-test.yml
. Dito isto, eu não acho que há muito perigo de umajest
oubeforeEach
mundial vazando para o código de produção;)Respostas:
Os documentos mostram que agora você pode adicionar:
Ao seu,
.eslintrc
que adicionará todas as coisas relacionadas a brincadeiras ao seu ambiente, eliminando os erros / avisos do linter.fonte
.eslintrc
arquivo que estenda seu padrão.eslintrc
na sua__tests__
pasta. Se você tem mesmo problema que OP (pastas de teste múltiplas), então você pode gerar aqueles.eslintrc
com um modelo e um script pequeno (algo comols **/__tests/ | xargs cp templates/.eslintrc
)O ESLint suporta isso na versão> = 4:
Aqui está uma solução alternativa (de outra resposta aqui, vote!) Para a limitação "extend in overrides" da configuração do eslint:
Em https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
fonte
"files"
e"env"
objeto"overrides"
emeslint.rc
que já não têm de se preocupar com Jest sintaxe específica passando linting fora dos arquivos de teste.Você também pode definir o ambiente de teste no seu arquivo de teste da seguinte maneira:
fonte
Para concluir a resposta de Zachary, aqui está uma solução alternativa para a limitação "estender em substituições" da configuração do eslint:
Em https://github.com/eslint/eslint/issues/8813#issuecomment-320448724
fonte
As configurações baseadas em padrão estão agendadas para a liberação 2.0.0 do ESLint. Por enquanto, no entanto, você terá que criar duas tarefas separadas (conforme mencionado nos comentários). Um para testes e outro para o restante do código e execute os dois, fornecendo arquivos .eslintrc diferentes.
PS: Na próxima versão do ESLint, haverá um ambiente de brincadeira. Ele registrará todos os globals necessários.
fonte
Eu resolvi o problema REF
Corre
E depois adicione seu
.eslintrc
arquivofonte
Adicione ambiente apenas para
__tests__
pastaVocê pode adicionar um
.eslintrc.yml
arquivo em suas__tests__
pastas, que amplia sua configuração básica:Se você tiver apenas um
__tests__
pasta, essa solução é a melhor, pois escopo apenas o ambiente de brincadeira onde for necessário.Lidando com muitas pastas de teste
Se você tiver mais pastas de teste (caso de OPs), ainda sugiro adicionar esses arquivos. E se você tiver várias dessas pastas, adicione-as com um script zsh simples:
Este script procurará
__tests__
pastas e adicionará um.eslintrc.yml
arquivo à configuração mostrada acima. Este script deve ser iniciado dentro da pasta que contém seu pai.eslintrc
.fonte
algumas das respostas pressupõem que você tenha o 'eslint-plugin-jest' instalado; no entanto, sem a necessidade de fazer isso, você pode simplesmente fazer isso no seu
.eslintrc
arquivo e adicionar:fonte
No seu arquivo .eslintignore, adicione o seguinte valor:
Isso deve ignorar todas as instâncias do diretório __tests__ e seus filhos.
fonte