Jel*_*Sch 4 javascript asynchronous return request cypress
我正在尝试使用以下函数传递 API 请求的结果:
Add(someName) {
cy.request ({
method: 'POST',
url: someURL,
body: {
name: someName
}
}).then(function(response){
return response
})
}
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试调用此函数时,它没有给我响应的内容(它给我未定义)。我认为这可能与异步性(如果这是一个词)或对象的范围有关,因此尝试为响应别名或在函数外部定义一个对象(然后将响应分配给该对象),而不需要运气好的话。
您只需要一个return随叫随到的人cy.request()。
Add(someName) {
return cy.request ({...})
.then(function(response) {
return response.body // maps the response to it's body
}) // so return value of function is response.body
}
Run Code Online (Sandbox Code Playgroud)
返回值类型是 Chainer(与所有 Cypress 命令的类型相同),因此您必须.then()在其上使用
myPO.Add('myName').then(body => ...
Run Code Online (Sandbox Code Playgroud)
.then()之后你不需要cy.request()
如果您想要完整的回复,
myPO.Add('myName').then(body => ...
Run Code Online (Sandbox Code Playgroud)
如何等待结果
如果您想等待结果,请使用 a ,如下Cypress.Promise所示
Add(someName) {
return cy.request ({...}) // don't need a .then() after this
// to return full response
}
Run Code Online (Sandbox Code Playgroud)
等待中
Add(someName) {
return new Cypress.Promise((resolve, reject) => {
cy.request ({...})
.then(response => resolve(response))
})
}
Run Code Online (Sandbox Code Playgroud)