如何获得承诺的接口与测试中的实际结果进行比较

时间:2016-12-23 11:40:05

标签: javascript angularjs interface jasmine q

应用程序使用服务$ q(模块ng)。有些函数必须返回一个promise。我需要验证结果是否具有完整承诺接口。

不仅方法然后(检查Angular和有人在stackoverflow的答案中推荐):_.isFunction(myObject.then) === true

但Promise API的当前实现的完整接口(根据$ q ng) - 方法然后,catch,最后。 E.g:

var hasPromiseInterface = !['then','catch','finally'].some(function (methodName) {
    return !_.isFunction(myObject[methodName]);
});

但是我不想对方法列表进行硬编码。我希望通过这样的稳定​​API来获取它们:

var promiseInterface = Object.getPrototypeOf($q.when());

var hasPromiseInterface = !_.keys(promiseInterface).some(function (element) {
        return !_.isFunction(value[element]);
    });

通过这种方式,我使用完整对象( promiseInterface )与每个函数实际实现。因此,它实际上不是界面。

是否有可能以某种方式获得(没有硬编码方法列表)这样的接口:

{
    then: angular.noop,
    catch: angular.noop,
    finally: angular.noop
}

或者像这样:

{
    then: jasmine.any(Function),
    catch: jasmine.any(Function),
    finally: jasmine.any(Function)
}

感谢提前!

P.S。它应该是容易阅读和简洁的方式:)。如果这种方式对延迟接口(解析,拒绝,通知)有用,那将会更好。

0 个答案:

没有答案