我正在使用mocha编写几个函数的集成测试,其中一些是同步,另一些是异步(返回Q promise)。
我有三个功能,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中执行此操作?
答案 0 :(得分:1)
您不需要包裹C
return B(A('args'))
.then(C)
.then(resultOfC => ...