我正在使用Cypress进行一些API测试,但是我正在努力访问JSON响应正文中的值;但是我可以对身体进行断言,表明它正确接收了它。
下面,我尝试分配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) })
这可能不是完全正确或最佳实践,但会为我的演示做准备
尽管您找到了解决方法后就不再需要,但我已经研究了我的赛普拉斯代码。我能够随后访问响应主体的属性: