我正在为一个医疗项目使用Cypress开发一个自动化的API测试框架。我遇到的问题是我不能从响应体中检索信息。我用另一个响应做了同样的事情,但是由于某些原因,当我发出这个请求时,这个查询不能工作。
这是Json顶部的样子:
"request": {
"body": {
"_embedded": {
"optometryDrugList": [
{
"id": 2887,
},
{
"id": 2888,
}
我已经发布了一个包含5种不同药物的请求,所以应该有5个optometryDrugListId。当我使用下面的请求链获取并放置其中一种药物时,我得到了一个"Cannot read property 'optometryDrugList‘of undefined“错误。
Cypress.Commands.add('putOptometryDrugExam', (optometryId, drugName, time, requestStatus) => {
cy.request({
method: 'GET',
url: '/' + `optometry-drug?optometryId=${optometryId}`,
headers: {
'Content-Type': 'application/vnd.api+json',
'accept': 'application/json',
'Authorization': token,
'apiKey': 'test'
}
})
.then((request) => {
const requestBody = request.body
const optometryDrugId = requestBody._embedded.optometryDrugList[4].id
return optometryDrugId
})
.then((optometryDrugId) => {
cy.request({
method: 'PUT',
url: '/' + `optometry-drug/${optometryDrugId}`,
所以我现在的问题是:我做错了什么/没有看到什么,这样我就可以获得特定的药物ID并在下一个PUT请求中使用它?任何帮助都将不胜感激!
发布于 2021-08-05 07:05:18
该错误似乎表明它无法访问optometryDrugList
数组。
尝试使用方括号属性访问器而不是点属性访问器。
另外,您是否可以尝试将第二个PUT请求放在一个.then
上,而不是放在单独的一个上?
Cypress.Commands.add('putOptometryDrugExam', (optometryId, drugName, time, requestStatus) => {
cy.request({
method: 'GET',
url: '/' + `optometry-drug?optometryId=${optometryId}`,
headers: {
'Content-Type': 'application/vnd.api+json',
'accept': 'application/json',
'Authorization': token,
'apiKey': 'test'
}
})
.then((response) => {
const optometryDrugList = request.body._embedded['optometryDrugList'];
const optometryDrugId = optometryDrugList[4].id;
cy.request({
method: 'PUT',
url: '/' + `optometry-drug/${optometryDrugId}`,
...
});
https://stackoverflow.com/questions/68664094
复制相似问题