Я пишу интеграционные тесты по нескольким функциям с использованием мокко, где некоторые из них синхронизированы и другие async (возвращает Q-обещание).Как обернуть синхронную функцию в обещании с помощью Q
У меня есть три функции: A
, B
и C
. Каждая функция возвращает значение, которое будет использоваться следующей функцией.
A
и C
являются синхронизацией, но B
возвращает обещание. Мне нужно позвонить им в порядке A
>B
>C
.
Если бы все они были синхронизированы, это выглядело бы так: C(B(A(args)))
.
Прямо сейчас, мой код выглядит следующим образом:
it('should pass this test', function() {
return B(A('args'))
.then(result => Q(C(result)))
.then(result => {
// bunch of assert statements
})
})
Я не поклонник этой линии: .then(result => Q(C(result)))
В bluebird
я бы просто сделать .then(Promise.method(C))
, но я должен использовать Q в эта ситуация и я не смог найти аналогичный метод в Q.
Есть ли способ сделать это в Q?
Ах, я вижу! то() может принимать как синхронные, так и асинхронные функции, я не могу поверить, что раньше этого не осознавал. –