【问题标题】:Testcafe TypeError: Cannot read property 'response' of undefinedTestcafe TypeError:无法读取未定义的属性“响应”
【发布时间】:2024-01-15 19:20:01
【问题描述】:

对于 Testcafe 来说,我是新手,我已经构建了一个记录器和 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 |

【问题讨论】:

  • 不熟悉testcafe,但如果我理解正确的代码:为什么requestNumber的默认值从源文件中的requestnumber = 0变为typeerror回溯期间的requestnumber = 1?
  • 大声笑,当我尝试更改某些值时,它的输出将调整回溯中的值。

标签: testing logging automated-tests typeerror testcafe


【解决方案1】:

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

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

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

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

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

【讨论】:

    最近更新 更多