赛普拉斯 - 从 json 响应正文中获取值
Cypress - get value from json response body
我正在使用 Cypress 进行一些 API 测试,但我很难访问 JSON 响应主体中的值;但是我可以对 body 执行断言,这表明它正在正确接收它。
下面我尝试分配 JSON 主体 (response.body),然后从中获取 'id' 的值:
describe('Creating a board', () => {
it('should create a board', () => {
cy.request({
method : 'POST',
url:`${requestUrl}/boards/`,
qs: {
name : "test-board",
token : token,
key : key
}
}).then((response) => {
expect(response).property('status').to.equal(200)
expect(response.body).property('id').to.not.be.oneOf([null, ""])
const body = (response.body)
boardId = body['id']
})
})
我进行了大量搜索,但找不到具体的方法。任何帮助将不胜感激...
我设法使用 Promise 解决了这个问题;
进一步阅读,我发现我正在执行的 then
函数是同步的(我是 JS 新手,请不要伤害我)。
我将 then
函数重构为以下内容:
.then((response) => {
return new Promise(resolve => {
expect(response).property('status').to.equal(200)
expect(response.body).property('id').to.not.be.oneOf([null, ""])
const respBody = response.body;
boardId = respBody['id']
resolve(boardId)
})
它可能不完全正确或最佳实践,但它可以用于我的演示
虽然因为您找到了解决方法而不再需要,但我已经查看了我的 cypress 代码。我能够访问以下响应主体的属性:
cy.request({
...
}.its('body').then((body) => {
const whatever = body.whatever;
})
我相信它基本上与您的解决方法相同 - 等待在承诺中解决 body。
我正在使用 Cypress 进行一些 API 测试,但我很难访问 JSON 响应主体中的值;但是我可以对 body 执行断言,这表明它正在正确接收它。
下面我尝试分配 JSON 主体 (response.body),然后从中获取 'id' 的值:
describe('Creating a board', () => {
it('should create a board', () => {
cy.request({
method : 'POST',
url:`${requestUrl}/boards/`,
qs: {
name : "test-board",
token : token,
key : key
}
}).then((response) => {
expect(response).property('status').to.equal(200)
expect(response.body).property('id').to.not.be.oneOf([null, ""])
const body = (response.body)
boardId = body['id']
})
})
我进行了大量搜索,但找不到具体的方法。任何帮助将不胜感激...
我设法使用 Promise 解决了这个问题;
进一步阅读,我发现我正在执行的 then
函数是同步的(我是 JS 新手,请不要伤害我)。
我将 then
函数重构为以下内容:
.then((response) => {
return new Promise(resolve => {
expect(response).property('status').to.equal(200)
expect(response.body).property('id').to.not.be.oneOf([null, ""])
const respBody = response.body;
boardId = respBody['id']
resolve(boardId)
})
它可能不完全正确或最佳实践,但它可以用于我的演示
虽然因为您找到了解决方法而不再需要,但我已经查看了我的 cypress 代码。我能够访问以下响应主体的属性:
cy.request({
...
}.its('body').then((body) => {
const whatever = body.whatever;
})
我相信它基本上与您的解决方法相同 - 等待在承诺中解决 body。