我有一个网站,您可以在该网站上提交一个开始在服务器上工作的表格。要开始这项工作,您发送一个请求,然后在响应中返回工作ID。然后,我的网站会请求获得此作业的状态,直到完成为止。
对于赛普拉斯,我想等到作业完成后再进行下一步。为此,我需要知道工作何时完成。我使用axios发出请求,我想向axios发出的所有请求中添加interceptor,以便我可以查找创建作业的作业以获取其ID,然后查找获得该作业的请求状态,以便我知道何时完成。
我尝试这样做,但是当我从请求文件中导入axios实例时,我注意到请求文件中包含的所有console.logs都会被打印两次。这意味着cypress导入变量时,它将再次运行文件,这意味着cypress无法访问实际发出请求的axios实例,而只能访问cypress使用的新实例。
当我打印process.env.NODE_ENV时,它以两个不同的值打印两次
我知道我可以使用Cypress.env('NODE_ENV')
打印env变量,但是显然cypress没有使用与我的API文件相同的变量作用域/环境。我还尝试将cypress.json设置为
{
"env" : {
"NODE_ENV" : "development"
}
}
并在我的测试文件process.env.NODE_ENV = Cypress.env('NODE_ENV')
的顶部运行它,但这没有用。我还在名为cypress的终端机上尝试了export NODE_ENV = development
,但没有成功。这也是我的package.json中的脚本,用于调用cypress "cypress": "./node_modules/.bin/cypress open"
,我正在使用cypress 3.1.0和node 9.5.0
甚至有可能使柏树与变量相互作用?我只是把柏树或节点设置错了吗?
答案 0 :(得分:0)
Cypress确实提供了对javascript的本地访问,但是只能通过cy.window()进行,因此尝试“合并”这两个作用域是徒劳的。请注意,cy.window()需要通过窗口公开变量。例如,您可以使用
将axios实例放在窗口上Select user_id
(
select distinct userid
from yourtable
where user_id = @userid
) t1
where
ancestry in ('England', 'France', 'Germany')
group by user_id
having count(user_id) = 3
然后您可以使用
在cypress中访问axiosMainconst axiosMain = axios.create()
window.axiosMain = axiosMain