温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - Cypress
cypress javascript web-api-testing

javascript - 柏

发布于 2020-04-16 11:38:34

我正在使用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']
    })
})

我已经进行了无数次搜索,但找不到具体的方法来进行搜索。任何帮助,将不胜感激...

查看更多

提问者
ZachOverflow
被浏览
59
ZachOverflow 2020-02-03 07:08

我设法通过使用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)
        })

这可能不完全正确或不是最佳做法,但这将对我的演示有用