Я использую testdouble
для прерывания вызовов в моем проекте node.js. Эта конкретная функция обертывает обещание и имеет несколько вызовов then
внутри самой функции.
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));
});
}
Поэтому я хочу определить, правильно ли обрабатываются resolve
и reject
на основе условий ошибки. Предположим, что есть некоторая пользовательская логика, которую я должен проверить.
Для моего теста
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);
}
Проблема в том, что результат подключения должен быть обещанием, поэтому я использую затем решение со значением, которое должно быть другим обещанием, которое разрешает или отклоняет.
Линия, к которой он относится, является результатом database.connect()
не является обещанием.
TypeError: Cannot read property 'then' of undefined
У кого-то есть успех с завершением этого типа вызова с помощью Test Double?