【发布时间】:2018-10-24 15:20:11
【问题描述】:
我有一个网站,您可以在其中提交在服务器上启动作业的表单。要开始这项工作,您发送一个请求,并在响应中返回工作 ID。然后,我的网站会请求获取该作业的状态,直到它完成为止。
使用 cypress,我想等到作业完成后再进行下一步。为此,我需要知道工作何时完成。我使用 axios 发出请求,我想将 interceptor 添加到 axios 发出的所有请求中,以便我可以查找创建作业以获取其 id 的请求,然后查找获取其状态的请求所以我可以知道它什么时候完成。
我尝试过这样做,但是当我从我的请求文件中导入 axios 实例时,我注意到我的请求文件中的任何 console.logs 都会被打印两次。这意味着当 cypress 导入变量时,它会再次运行文件,这意味着 cypress 无法访问实际发出请求的 axios 实例,而是只有 cypress 使用的新实例。
当我打印 process.env.NODE_ENV 时,它会使用两个不同的值打印两次
我知道我可以使用Cypress.env('NODE_ENV') 打印环境变量,但显然赛普拉斯没有使用与我的 API 文件相同的变量范围/环境。我也尝试将 cypress.json 设置为
{
"env" : {
"NODE_ENV" : "development"
}
}
并在我的测试文件process.env.NODE_ENV = Cypress.env('NODE_ENV') 的顶部运行它,但这不起作用。我还在终端中尝试了export NODE_ENV = development,我称之为cypress,但这没有用。这也是我用来调用 cypress "cypress": "./node_modules/.bin/cypress open" 的 package.json 中的脚本,我使用的是 cypress 3.1.0 和节点 9.5.0
甚至可以让 cypress 与变量交互吗?是不是我的 cypress 或节点设置错误?
【问题讨论】: