Estoy llamando a una función GetApiResponse() desde CallApi() que devuelve un objeto de respuesta Api. Si estoy imprimiendo esa respuesta en GetApiResponse() en la visualización del objeto completo en la consola. Pero estoy pasando esto a la variable 'passstatus' en la función CallApi. Pero aquí se muestra indefinido. Probé cosas JSON.Stringyfy() pero no funcionó para mí.
Quiero usar esa respuesta de la función GetApiResponse() en la función ApiCall.
it("ApiCall", function(){ function testCallBack(){ var passstatus=GetApiResponse(testData2) setTimeout(()=>{ console.log(passstatus) //This returns undefined expect(passstatus.status).to.equal("pass") },15000); } testCallBack(); }) function GetApiResponse(testData2){ cy.request({ method: "GET", url: `https://test.orders.com//admin/api/2022-01/orders.json?name=%23${testData2.orderId}&status=any`, headers: { Accept: 'application/json', "Content-Type": 'application/json', "Access-Token": "XXXXXXXXXXX" } }).then(response =>{ const jsonData = response.body.orders[0]; console.log(jsonData) return jsonData; }) }Devuelve la solicitud externa; de lo contrario, se ignora el return jsonData
function GetApiResponse(testData2) { return cy.request({ ... }).then(response => { return response.body.orders[0]; }) }Es asíncrono, así que utilícelo con .then()
GetApiResponse(testData2).then(passstatus => { ... // use passStatus here })O usa un alias
function GetApiResponse(testData2) { cy.request({ ... }).then(response => { return response.body.orders[0]; }) .as('passstatus') // store to an alias } GetApiResponse(testData2) cy.get('@passstatus').then(passstatus => { ... // use passStatus here })