TypeError: Method Promise.prototype.then called on incompatible receiver Proxy(TypeError:方法Promise.Prototype.Then在不兼容的接收方代理上调用)
本文介绍了TypeError:方法Promise.Prototype.Then在不兼容的接收方代理上调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
为了执行集成测试,我使用了jasmine
和puppeteer
,由于我正在通过一门教育课程,因此我决定使用js代理来封装测试功能,但在进行测试时会遇到以下错误
TypeError: Method Promise.prototype.then called on incompatible receiver [object Object]
下面是我的CustomPage类,它将表示一个Chrome选项卡:
const puppeteer=REQUIRED(‘puppeteer’);
class CustomPage{
static async build(){
const browser =await puppeteer.launch({headless:false});
const page = browser.newPage();
var customPage = new CustomPage(page);
console.log("harchi run mishe")
return new Proxy(customPage,{
get:function(target,property){
return (customPage[property]||page[property]||browser[property])
}
})
//return proxy;
}
constructor(page){
this.page = page
}
}
module.exports=CustomPage;
这是我的header.spec.js
文件,这是我的测试文件。
const Page = require('./helpers/page');
var tab;
describe('header representation',()=>{
beforeEach(async(done)=>{
tab =await Page.build();****here is the problem********
await tab.goto('localhost:3000');
})
it('should show header logo',async()=>{
const text = await tab.$eval('a.brand-logo',(el)=>el.innerHTML);
expect(text).toEqual('Blogster');
//done()
})
})
我实际上已经认定我的问题出在指定的行。似乎js不能将代理视为承诺,但我找不到任何解决方案。
javascript
对于后代,我发现使用代理需要重新绑定推荐答案的this
关键字。示例:
function validator(promise, prop) {
if (prop in promise || promise.hasOwnProperty(prop)) {
if (typeof promise[prop] === 'function') {
return promise[prop].bind(promise); // << Important part!
}
return promise[prop];
}
return 'Fake!';
}
const proxy = new Proxy(
Promise.resolve('Testing 1 2 3'),
validator
);
console.log(proxy.someFakeThing); // prints 'Fake!'
proxy.then(console.log); // Prints 'Testing 1 2 3'
这篇关于TypeError:方法Promise.Prototype.Then在不兼容的接收方代理上调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:TypeError:方法Promise.Prototype.Then在不兼容的接收方代理上调用
基础教程推荐
猜你喜欢
- 当用户滚动离开时如何暂停 youtube 嵌入 2022-01-01
- 动态更新多个选择框 2022-01-01
- 我什么时候应该在导入时使用方括号 2022-01-01
- 悬停时滑动输入并停留几秒钟 2022-01-01
- 有没有办法使用OpenLayers更改OpenStreetMap中某些要素 2022-09-06
- 角度Apollo设置WatchQuery结果为可用变量 2022-01-01
- 在 JS 中获取客户端时区(不是 GMT 偏移量) 2022-01-01
- 响应更改 div 大小保持纵横比 2022-01-01
- Karma-Jasmine:如何正确监视 Modal? 2022-01-01
- 在for循环中使用setTimeout 2022-01-01