自定义命令和任务之间有什么区别?我正在尝试了解如何分别使用它们。
自定义命令文档:https://docs.cypress.io/api/cypress-api/custom-commands.html
A command(cy
对象上的most方法)是将“操作”排队(按顺序)到当前执行的命令队列中的函数,这些命令以串行方式运行。在上一个命令未完成之前,下一个命令不会执行。大多数命令直接在浏览器中执行。
用于与您的受测Web应用程序(AUT)进行交互---主要是与DOM交互,例如通过cy.get(selector)
查询DOM;并做出断言。
A task是在赛普拉斯后端进程(节点)上而非在浏览器中定义和执行的功能。要执行任务(您先前在cypress/plugins/index.js
文件中定义过),您需要首先通过cy.task(taskName, data)
将它作为常规命令放入测试中。然后,赛普拉斯(当命令轮到执行时)将消息发送到后端进程(通过IPC通道),在该进程中执行任务。
[如果您的任务返回数据,则该数据将被序列化(通过JSON.stringify
或类似方式),然后发送回浏览器,并传递到您可能提供给链接到.then()
命令的cy.task()
的回调中。
任务主要用于与您自己的服务器后端进行通信,例如播种数据库;或对于I / O,例如读/写文件。