我正在进行一些 Cypress 测试,我需要通过 api 调用向数据库添加一些信息。但我需要将响应中的所有 ID 传递给 Cypress 内的另一个请求,但我需要在 for 循环之外执行此操作,因为我不想每次有信息时都发出请求。我创建了一个记录类型并在 .then 中添加了一个值,但它仍然是未定义的。 SubmitRequest 调用中的参数未定义。以前有人遇到过这个吗?我无法在 cy.request then 主体中调用 SubmitRequest 方法,因为它必须位于 for 循环之外。下面是代码
let idsWithValue: Record<string, commonType.Information>;
for (let index in information) {
//Create the request
const requestBody = {
name: `information.Name`,
description: `information.Description`
}
//Send request for elements
const options = {
method: 'POST',
url,
body: requestBody,
headers: coApi.getRequestHeaders()
}
cy.request(options).then((response) => {
expect(response.status).to.eq(200);
const informationId: string = response.body;
//After we get the informationId from server add it to a list to pass to another request method
idsWithValue[informationId] =information[index];
})
}
//Submit request (idsWithValueis undefined here) this has to be outside for loop
submitRequest(idsWithValue);```
您应该能够通过确保仅在循环中的所有
submitRequest()
完成后才调用 cy.request()
来修复此问题。
尝试将调用包装在
cy.then()
中,如果不运行测试,我不能 100% 确定,但通常 Cypress 不会执行命令,直到所有先前的命令都完成为止,
const idsWithValue = [];
for (...) {
cy.request(...).then(response => {
idsWithValue[...] = ...
})
}
cy.then(() => {
submitRequest(idsWithValue)
})