Olá desenvolvedor. Criando teste unitário com vue-test-utils e input com diretiva v-mask.
Olá desenvolvedor. | ||||||||||||||
Se assim como eu você estava desenvolvendo os testes para seu component vue e ficou travado ao testar um v-text-field que utiliza a diretiva v-mask, esse artigo é para você. | ||||||||||||||
Essa não é uma coisa complicada de se fazer, mas não é muito fácil de encontrar matériais ou tutoriais que digam como fazer, por esse motivo decidi escrever esse pequeno artigo. | ||||||||||||||
Nesse teste estamos usando a biblioteca de teste Vue Test Utils e a lib de máscara vue-the-mask. | ||||||||||||||
Vamos lá... | ||||||||||||||
1. | ||||||||||||||
Primeira alteração que você deve fazer é mudar a sua função de criação de mount() para shallowMount(). A função shallowMount renderiza separadamente os components filho do seu component principal, assim o comportamento da diretiva será iniciado também. | ||||||||||||||
Altere isto: | ||||||||||||||
| ||||||||||||||
Para isto: | ||||||||||||||
| ||||||||||||||
Então nesse momento ao rodar o teste você deve receber o seguinte erro: | ||||||||||||||
| ||||||||||||||
Se isso acontecer, você está no caminho certo! | ||||||||||||||
2. | ||||||||||||||
Segunda alteração que você precisará fazer é trocar o seu v-text-field por um input. Isso mesmo, você não leu errado. (Eu sei que essa não é a coisa mais confortável de se fazer, mas após estilizar o seu input a alteração será invisivel). | ||||||||||||||
Essa alteração resolverá o erro da diretiva: | ||||||||||||||
| ||||||||||||||
(Uma outra opção, que eu particularmente não gosto, é manter o v-text-field e adicionar um input escondido que irá ser responsável pela diretiva. Nesse caso, o código ficaria desta forma: | ||||||||||||||
| ||||||||||||||
Essa última opção não é a minha preferida, mas use a que preferir.) | ||||||||||||||
3. | ||||||||||||||
Após essas duas alterações você já conseguirá recuperar os valores mascarados para testar. | ||||||||||||||
| ||||||||||||||
Agora é só rodar seu teste e ser feliz! | ||||||||||||||
Espero que esse rápido artigo tenha te ajuda a resolver esse problema muito chato na hora de desenvolver os nossos testes unitários no front. |