Mas*_*oe2 1 javascript typescript cypress
这是其他人在这里提出的问题的后续内容如何通过函数返回 cy.request 的响应
我想创建一个调用 api、处理响应并仅返回响应的一部分的函数。我有下面的代码,其中的代码不起作用。我收到编译器错误 - 类型既不是未定义、void 也不是 null 的函数应该返回一个值。我该如何进行这项工作?
Add(someName) : ItemClass {
cy.request({
method: 'POST',
url: someURL,
body: {
name: someName
}
}).then(function(response) {
let result = response.body.find((item) => {return item.id === 123})
return result; // result is of type ItemClass
})
}
Run Code Online (Sandbox Code Playgroud)
前面链接的问题表明您需要return cy.request(...)语法,但由于您也使用 Typescript,因此您还需要更改返回类型。
cy.request()产生一个泛型Chainable类型,因此返回类型可能是
Add(someName) : Chainable<ItemClass> {
return cy.request({
...
Run Code Online (Sandbox Code Playgroud)
但响应是标准的 javascript 响应类型,item看起来像 an object,因此返回类型是
Add(someName) : Chainable<Object> {
return cy.request({
...
Run Code Online (Sandbox Code Playgroud)
如果您有 的类ItemClass,并且想要返回 的实例ItemClass,则需要将其实例化到.then()回调中。
类型参考
命令类型定义在这里request给出
Run Code Online (Sandbox Code Playgroud)request<T = any>(url: string, body?: RequestBody): Chainable<Response<T>>