2016-07-11 4 views
0

Я пишу интеграционные тесты по нескольким функциям с использованием мокко, где некоторые из них синхронизированы и другие 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?

ответ

1

Вам не нужно обернуть C

return B(A('args')) 
    .then(C) 
    .then(resultOfC => ... 
+0

Ах, я вижу! то() может принимать как синхронные, так и асинхронные функции, я не могу поверить, что раньше этого не осознавал. –

Смежные вопросы