testcafe requestLogger регистрирует только первый тест в приборе - PullRequest
0 голосов
/ 11 сентября 2018

Итак, мне становится лучше с 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);
});

Хотя первый тест работает отлично, второй, даже если он такой же, выдаст пустой массив, как только я попытаюсь утешить.log (logger.requests)

Есть идеи, как это сделать?

1 Ответ

0 голосов
/ 18 сентября 2018

У меня возникла та же проблема, потому что вам нужно подождать, пока механизм Smart Assertion Query Testcafe не выполнит утверждения в массиве Logger.request.

Документация говорит нам, что с помощью count илисодержит предикаты, заставляющие Testcafe использовать механизм Smart Assertion Query

Предложение от Marion может помочь, если ваш запрос вернет 200 statusCode:

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

Я нашел прощевместо этого сделайте это, что не зависит от возвращенного статуса http

await t.expect(logger.count(() => true)).eql(1);

замените eql (1) на количество запросов, которые вы ожидаете зарегистрировать до выполнения ваших утверждений

...