当前位置: 首页 > news >正文

Cypress 调用后端能力 task

在 Cypress 中的测试都是在前端运行的, 一些后端的操作是不可以直接调用的, 例如 fs, 但是可以通过 task 作为桥梁进行调用.

1. 在 cypress.config.js 中配置

  e2e: {setupNodeEvents(on, config) {plugins(on, config);},

2. 在 plugins/index.js 中实现

const fs = require("fs");
const Sms = require("../support/dkd/common/sms");module.exports = (on, config) => {on("task", {readFileSync({ src }) {return fs.readFileSync(src);},smsCode({ config, nationCode, phoneNo }) {return new Sms(config).getCode(nationCode, phoneNo);},});
};

3. 在测试中使用

3.1 普通的返回

  • 如果返回的是个字符串直接就可以通过 cy.task() 的返回值获取了.
  • 如果返回的是个 Buffer, 则需要使用 await cy.task() 并且获取返回值后转换成 Buffer (`Buffer.from(xxx)
  • `)

例如:

const xxx = await cy.task("readFileSync", { src: __dirname + "/xxxxxx/xxx.xx" });
Buffer.from(xxx)

3.2 如果返回的是一个 promise

必须使用 .then, 使用 await 没有用.

例如:

    cy.task("smsCode", { config, nationCode: "+86", phoneNo }).then((smsCode) => {cy.get('#xxxx').should("be.visible").type(smsCode);});

看起来很奇怪, 通常在 js 中以下两种是可以通用的:

  • const xxx = await fff()
  • fff().then((xxx) => {})

但是在这里不行, 一定要使用 then() 否则在最开始就直接执行了 await cy.task() 后面的语句, 不会等待其返回.


http://www.mrgr.cn/news/11233.html

相关文章:

  • JavaScript计算问题
  • “曹德旺胞妹”正力新能:市占率偏低巨亏近28亿,受客户影响较大
  • 《AI办公类工具PPT系列之四——ChatPPT》
  • LLM推理端实现
  • 数据结构: 树状数组
  • Jmeter进行http接口测试
  • 数据结构:用栈实现队列(232)LeetCode
  • 东方晶源即将亮相IDAS 2024设计自动化产业峰会!
  • TinaSDKV2.0 自定义系统开发
  • HTML静态网页成品作业(HTML+CSS+JS)——迪士尼公主介绍(6个页面)
  • C语言 之 memcpy函数的内存重叠问题 及解决该问题的思路
  • 第八节:Nodify 编辑器属性
  • TortoiseGit使用教程
  • 边缘物联网平台AIoTedge与NodeRED完美结合
  • docker 保持镜像报错:read-only file system
  • 322.零钱兑换
  • 云原生周刊:KubeSphere 宣布开源 Thanos 的企业级发行版 Whizard
  • libevent bufferevent pair 死锁
  • 【数据分享】2000—2022年我国各省份各教育阶段的学校资产情况(免费获取/50多类指标)
  • 18. 分割dataframe:让数据分析更高效