我正在按照this的示例为测试创建模拟的响应。
稍作修改,看起来像这样:
var data = { foo: 'bar'};
var blob = new Blob([JSON.stringify(data)], {type : 'application/json'});
var init = { "status" : 200 , "statusText" : "SuperSmashingGreat!" };
var resp = new Response(blob,init);
console.log(resp.url)
body: (...)
bodyUsed: true
headers: Headers {}
ok: true
redirected: false
status: 200
statusText: "SuperSmashingGreat!"
type: "default"
url: ""
这在模拟数据和状态方面做得很好,但是,我也想模拟resp.url
,我看不到如何使用构造函数来设置它,而且我似乎无法在resp本身上进行设置< / p>
resp.url
>> ""
resp.url = 'www.test.com'
>> "www.test.com"
resp.url
>> ""
那我该如何设置网址?
答案 0 :(得分:1)
由于url
实际上是由继承的getter定义的,因此您可以使用Object.definedProperty
在您的Response
实例上直接定义一个简单的value属性,它遮盖了继承的getter属性:>
Object.defineProperty(resp, "url", { value: "foobar" });
根据您自己的理解,可以通过查看Response.prototype.url
的属性描述符来看到继承的getter:
Object.getOwnPropertyDescriptor(Object.getPrototypeOf(new Response()), 'url')
> {get: ƒ, set: undefined, enumerable: true, configurable: true}