【发布时间】:2018-08-10 03:41:13
【问题描述】:
我正在尝试覆盖(猴子补丁)Jasmine 框架的 it() 函数,在此过程中,我想知道作为第二个参数传递给 it() 函数的函数是否属于 @ 类型987654323@ 与否。我尝试使用instanceof Promise,因为所有async 函数都返回一个promise,但它永远不会解析为true,并且它永远不会进入以下代码块中的if 块。我尝试将所有函数记录到控制台,发现所有async() 函数规范的返回类型均为tslib_1.awaiter(some args..)。
这是我所拥有的:
let newIt = jasmine.getEnv().it;
jasmine.getEnv().it = function(...args): jasmine.Spec {
// do something.
if(args[1] instanceOf Promise) {
debugger; // never comes in here.
// catch error.
}
return newIt.apply(this, arguments);
}
我在这里做错了什么?谁能指出我正确的方向?
谢谢。
编辑:假设我有以下两个虚拟规范,一个是异步的,另一个是同步的:
异步测试:
const exp = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1);
}, 500);
});
};
it('asyncTest', async () => {
expect(await exp()).toEqual(1);
}, 600);
同步:
it('testNon', () => {
expect(true).toBe(true);
});
【问题讨论】:
-
我很好奇,你为什么要这个?
-
在最新的 Jasmine 中,当您编写异步测试时,它不会正确抛出控制台错误,这有助于我在 Chrome 中进行调试。
标签: javascript typescript jasmine