Testcafe TypeError:无法读取未定义的属性“响应”

时间:2020-09-02 09:16:52

标签: testing logging automated-tests typeerror testcafe

我不是Testcafe的新手,而是构造了一个logger和loggerResponseBody函数。但是在运行测试时,它会给我带来类型错误。同样,这些测试以前也可以工作。
logger和loggerResponseBody的代码:(logger和loggerResponseBody位于不同的文件中)

import { RequestLogger } from 'testcafe'

import { BASE_URL } from '../consts/generic'

export const logger = (endpoint, method = 'GET') =>
  RequestLogger(
    { url: `${BASE_URL}/api/v1/${endpoint}/`, method },
    {
      logResponseHeaders: true,
      logResponseBody: true
    }
  )

export const loggerResponseBody = (logger, requestNumber = 0) =>
  JSON.parse(logger.requests[requestNumber].response.body.toString())

哪个给出错误:

   1) TypeError: Cannot read property 'response' of undefined

      Browser: Chrome 85.0.4183 / Linux 0.0.0

         10 |      logResponseBody: true
         11 |    }
         12 |  )
         13 |
         14 |export const loggerResponseBody = (logger, requestNumber = 0) =>
       > 15 |  JSON.parse(logger.requests[requestNumber].response.body.toString())
         16 |

1 个答案:

答案 0 :(得分:2)

看起来您在服务器响应之前就记录了请求。您可以通过执行

来等待响应

await t.expect(logger.contains(r => r.response.statusCode === 200)).ok();

RequestLogger.containsRequestLogger.count使用Smart Assertion Query Mechanism,以确保收到响应。

有关记录HTTP请求的更多信息,请参见Intercept HTTP Requests

如果这不能解决问题,请附上您的测试代码,以便我们找出原因。