Promise Constante – Uma forma simples de criar situações assíncronas de teste

PROMISE CONSTANTE

A dica de hoje é bastante interessante porque ela nos ajuda a criar algumas situações de teste, principalmente envolvendo promises, que é uma forma de lidar com o assincronismo em JavaScript. Muitas vezes precisamos testar essa promise, então imagine o seguinte cenário, onde eu quero construir uma função readDir e promisificá-la:

 

const fs = require(‘fs’)

const readdir = path => new Promise((resolve, reject) => {

fs.readdir(path,(err, list) => {

if(err){

reject(err)

}else{

resolve(list)

}

})

})

Agora imagine que temos uma outra função chamada path, que é assíncrona:

const functA = (path) => {

const list = await readdir(path)

console.log(list)

}

Se nós quiséssemos, por exemplo, testar essa função, rodaríamos o funcA:

funcA(‘./’)

Ela irá trazer todos os arquivos que eu tenho no meu diretório atual.

Agora imaginem que eu quero testar esse readdir, mas sem efetivamente passar pelo fs, quero que minha promise retorne os valores para que possa apenas testar se o funcA está correto. É equivalente ao mock.

Quando queremos ter uma promise que é uma constante para a situação que estamos utilizamos, podemos fazer o seguinte:

const readdir = path => Promise.resolve([‘arquivo1.txt’, arquivo2.txt])

Ele irá retornar uma lista com esses resultados. Então se eu quiser ter uma lista que sempre resolve pro mesmo valor, sendo utilizado parecido com mock para teste, utilizamos o promise.resolve.

Quando estamos aprendendo programação assíncrona e queremos fazer esses testes, isso é muito interessante.

Deixe suas dúvidas e sugestões nos comentários. Curta o DevPleno no Facebook, se inscreva no canal no YouTube e cadastre seu e-mail para não perder as atualizações. Abraço!