J'utilise testdouble
pour stubbing appels dans mon projet Node.js. Cette fonction particulière encapsule une promesse et a plusieurs appels then
dans la fonction elle-même.test avec plusieurs promesses thens utilisant testdoublejs
function getUser (rethink, username) {
return new Promise((resolve, reject) => {
let r = database.connect();
r.then(conn => database.table(tablename).filter({username}))
.then(data => resolve(data))
.error(err => reject(err));
});
}
Je suis désireux de déterminer si le bien sont gérées resolve
et reject
en fonction des conditions d'erreur. Supposons qu'il y ait une certaine logique personnalisée que j'ai besoin de valider.
Pour mon test
import getUser from './user';
import td from 'testdouble';
test(t => {
const db = td.object();
const connect = td.function();
td.when(connect('options')).thenResolve();
const result = getUser(db, 'testuser');
t.verify(result);
}
La question est que le résultat de connexion doit être une promesse, donc je resolve puis avec une valeur qui doit être une autre promesse qui résout ou rejette.
La ligne, il est relatif à est le résultat de database.connect()
n'est pas une promesse.
TypeError: Cannot read property 'then' of undefined
Quelqu'un at-il réussi à bloquer ce type d'appel avec Test Double? à double test
Pouvez-vous fournir l'erreur que vous obtenez? –
@ ckross01 Mind nous montrant l'erreur et/ou une pile de traces? – GPX
J'ai ajouté l'erreur à la question sur le fait que le résultat de 'database.connect' n'est pas une promesse. – ckross01