javascript-testcafe RequestLogger不拦截api调用

由于某种原因,我无法获得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();
}
最佳答案
我怀疑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;  
    }
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


什么是深拷贝与浅拷贝?深拷贝与浅拷贝是js中处理对象或数据复制操作的两种方式。‌在聊深浅拷贝之前咱得了解一下js中的两种数据类型:
前言 今天复习了一些前端算法题,写到一两道比较有意思的题:重建二叉树、反向输出链表每个节点 题目 重建二叉树: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列 {1,2,4,7,3,5,6,8} 和中序遍历序列 {
最近在看回JavaScript的面试题,this 指向问题是入坑前端必须了解的知识点,现在迎来了ES6+的时代,因为箭头函数的出现,所以感觉有必要对 this 问题梳理一下,所以刚好总结一下JavaScript中this指向的问题。
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)