我不是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 |
答案 0 :(得分:2)
看起来您在服务器响应之前就记录了请求。您可以通过执行
来等待响应 await t.expect(logger.contains(r => r.response.statusCode === 200)).ok();
RequestLogger.contains
和RequestLogger.count
使用Smart Assertion Query Mechanism,以确保收到响应。
有关记录HTTP请求的更多信息,请参见Intercept HTTP Requests。
如果这不能解决问题,请附上您的测试代码,以便我们找出原因。