Cypress-从json响应正文中获取值
我正在使用Cypress进行一些API测试,但我很难访问JSON响应正文中的值;但是,我可以对正文执行断言,这表明它正在正确地接收它。
下面,我尝试为JSON主体(响应.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']
})
})
我已经搜索了很多次,但找不到具体的方法。如有任何帮助,我们将不胜感激...
解决方案
我通过承诺设法解决了这个问题;
进一步阅读,我发现我正在执行的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)
})
这可能不是完全正确或最佳的做法,但它适用于我的演示
相关文章