【发布时间】:2019-09-21 00:24:26
【问题描述】:
设置:
- 开玩笑: 21.2.1
- 节点: 10.16.3
- npm: 6.9.0
为什么 Jest 的 expect 不能将 node.js 的 util.promisify 返回的 Promise 识别为 Promise 的实例?
以下失败:
const util = require('util');
const fn = util.promisify((opts, cb) => cb(null, {}));
const promise = fn();
expect(promise).toBeInstanceOf(Promise)
同样,以下失败:
const util = require('util');
const fn = util.promisify((opts, cb) => cb(null, {}));
const promise = fn();
expect(promise.then).toBeInstanceOf(Function);
可以通过检查 typeof promise.then 是否为“功能”来规避该问题,但我对这种行为的原因很感兴趣。
非常感谢您提供的信息!
【问题讨论】:
-
它可能会返回实现 Promise 接口的东西,但它不是
Promise的实例。 -
可以理解,但是为什么promise.then instanceof函数会失败呢?它返回的是可调用但不是函数的东西? O.o