testcafe requestLogger仅记录夹具中的第一个测试

时间:2018-09-11 07:30:23

标签: javascript reactjs testing e2e-testing testcafe

因此,我使用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),也会输出一个空数组

有什么想法吗?

1 个答案:

答案 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)替换为您在声明之前希望记录的请求数