testcafe RequestLogger没有拦截api调用

时间:2019-02-13 18:41:41

标签: javascript typescript automated-tests e2e-testing testcafe

由于某种原因,我无法获得testcafe的RequestLogger来记录我正在进行的任何API调用。我已经阅读了关于RequestLogger的几乎所有文章和问题,所有内容都指向与下面的代码相同的代码。不知道我在做什么错,任何帮助都会很棒。

参考:

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

Cannot intercept outgoing AJAX request from page using Testcafe

How to log Google Analytics calls in 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 :(得分:2)

我怀疑TestCafe的运行速度比调用api的代码快。

在使用记录器对象之前,您应该等待它已收到至少一个呼叫。

要检查记录器是否已接听电话,我建议采用以下方式:

data have;
  do time = 0 to 24;
    time = time + ranuni(123) - 1.2;
    temp = 60 + 6 * sin(time / 7.6);
    rowNumber + 1;
    output;
  end;
run;

ods graphics on / width=325px;

proc sgplot data=have;
  title "Scatter";
  footnote "Created: &sysdate";
  scatter x=time y=temp;
run;

proc sgplot data=have;
  title "Series";
  footnote "Created: &sysdate";
  series x=time y=temp / markers;
run;