Używam testdouble
do wywoływania kodu pośredniczącego w moim projekcie node.js. Ta konkretna funkcja jest opakowaniem obietnicy i ma wiele wywołań then
w samej funkcji.Testowanie obietnic z wieloma testami za pomocą 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));
});
}
Więc ja chcąc ustalić, czy resolve
i reject
są obsługiwane prawidłowo oparta na warunkach błędach. Załóżmy, że istnieje tam niestandardowa logika, którą muszę zweryfikować.
Dla mojego testu
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);
}
problem jest, że wynik Połącz musi być obietnica, więc używam następnie rozwiązać z wartością, która musi być kolejna obietnica, że rozwiązuje lub odrzuca.
Linia, której dotyczy, jest wynikiem database.connect()
nie jest obietnicą.
TypeError: Cannot read property 'then' of undefined
Ktoś ma powodzenie z wywoływaniem tego typu połączenia z Test Double?
Czy możesz podać błąd, który otrzymujesz? –
@ ckross01 Umysł pokazujący nam błąd i/lub stacktrace? – GPX
Dodałem błąd do pytania o zasadniczo to stwierdza, że wynik 'database.connect' nie jest obietnicą. – ckross01