testcafe RequestLogger не перехватывает вызовы API - PullRequest
0 голосов
/ 13 февраля 2019

По какой-то причине я не могу заставить RequestCogger testcafe регистрировать любые вызовы API, которые я делаю.Я прочитал почти все статьи и вопросы о RequestLogger, и все указывает на то, что похоже на приведенный ниже код в работе.Не уверен, что я делаю не так, любая помощь будет отличной.

Ссылки:

https://devexpress.github.io/testcafe/documentation/test-api/intercepting-http-requests/logging-http-requests.html

Не удается перехватить исходящийAJAX-запрос со страницы с использованием Testcafe

Как регистрировать вызовы Google Analytics в Testcafe?

Я работаю локально и использую API, работающий также локальноинтерфейсный порт 3000 и серверный порт 8080, API: 8080 / api / admin.Я могу видеть логгер как введенный в тест, но ничего не обновляет его, это просто мягкий объект с начальными реквизитами и выдает ошибку после оператора t.expect.

Интересно, что beforeEach что-то ломает, но янужно для того, чтобы инициировать любые вызовы API, потому что пользователь должен быть аутентифицирован.Я вижу вызов API при отладке, который пытаюсь перехватить, но не повезло

testcafe версия: 1.0.0 ||0.23.3

Код теста

// have tried several urls, from exact to generic to ports.
const logger = RequestLogger("/api/", {
  logRequestHeaders: true,
  logRequestBody: true
});

const url = 'localhost:3000/reports';

fixture `Report`
  .page(url)
  .requestHooks(logger)
  .beforeEach(async (t: TestController) => {
    await loginAndNavToReports({ t });
  });

test("Reports", async (t: TestController) => {
  // this fires an api call through the /api/ path
  await t.click(".test-reportLaborSummary");
  // have tried several comparisons here, all fail or expect falsey to be truthy errors
  await t.expect(logger.count(() => true)).ok();
}

1 Ответ

0 голосов
/ 14 февраля 2019

Я подозреваю, что TestCafe работает быстрее, чем код, который вызывает API.

Перед использованием объекта регистратора следует дождаться, чтобы он получил хотя бы один вызов.

Чтобы проверить, получил ли регистратор вызов, я предлагаю сделать это следующим образом:

await wait_for_first_request();
const receivedCalls = logger.requests.length;
if (receivedCalls === 0) {
  throw new Error('api has not been called')
}


async function wait_for_first_request() {
  for (let i = 0; i < 50; i++) {
    await t.wait(100);
    if (logger.requests.length > 0 ) {
      return;  
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...