因此,我使用testcafe的情况越来越好,我想学习的一项功能是它的RequestLogger。
所以我已经创建了它的一个实例
import { RequestLogger } from 'testcafe';
const logger = RequestLogger(/some reg exp/, {
logRequestHeaders: true,
logRequestBody: true
});
export default logger;
,然后尝试在示例测试夹具上使用它:
fixture `REQUEST LOGGER TEST`
.requestHooks(logger);
test('should contain 204 as a status code 1', async t => {
await t.useRole(role);
await model.doSmth(t);
await model.doSmthElse(t);
console.log(logger.requests);
await t
.expect(logger.requests[0].response.statusCode)
.eql(204);
await t
.expect(logger.requests[1].response.statusCode)
.eql(200);
});
虽然第一个测试工作正常,但第二个测试即使是相同的,一旦我尝试console.log(logger.requests),也会输出一个空数组
有什么想法吗?
答案 0 :(得分:2)
我遇到了同样的问题,因为在对Logger.request数组进行断言之前,您必须等待Testcafe的智能断言查询机制。
documentation告诉我们,使用count或包含谓词会使Testcafe使用Smart Assertion Query mechanism
如果您的请求返回200 statusCode,则Marion的建议可能会起作用:
await t.expect(logger.contains(record => record.response.statusCode === 200)).ok();
我发现更简单地执行此操作,这不取决于返回的http状态
await t.expect(logger.count(() => true)).eql(1);
将eql(1)替换为您在声明之前希望记录的请求数