Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Cypress中存根模块_Javascript_Reactjs_Cypress - Fatal编程技术网

Javascript 如何在Cypress中存根模块

Javascript 如何在Cypress中存根模块,javascript,reactjs,cypress,Javascript,Reactjs,Cypress,我正在尝试使用Cypress存根一个模块。这是我到目前为止尝试过的,但不起作用 这是我的组件/页面的简短版本 //SomeComponent.jsx 从“/useSomething”导入{useSomething} 常量SomeComponent=()=>{ //使用一个定制的钩子 const{data,error}=useSomething() 常量渲染数据=()=>{ //将数据映射到JSX元素数组中 返回data.map(…) } 返回( {renderData()} ) } 导出默认组件

我正在尝试使用Cypress存根一个模块。这是我到目前为止尝试过的,但不起作用

这是我的组件/页面的简短版本

//SomeComponent.jsx
从“/useSomething”导入{useSomething}
常量SomeComponent=()=>{
//使用一个定制的钩子
const{data,error}=useSomething()
常量渲染数据=()=>{
//将数据映射到JSX元素数组中
返回data.map(…)
}
返回(
{renderData()}
)
}
导出默认组件
这是我定制的钩子的样子

//useSomething.js
从“react”导入{useState}
从“./db”导入{getData}
导出常量useSomething=()=>{
const[data,setData]=useState({})
const[error,setError]=useState()
useffect(()=>{
getData()。然后(数据=>{
setData(数据)
}).catch(错误=>{
设置错误(错误)
})
//…这里还有一些不相关的代码
}, [])
返回{数据,错误}
}
下面是getData的外观

//getData.js
导出常量getData=()=>{
const data=//来自外部服务的一些API调用
返回数据
}
该方法通过db.js公开(实际上是db/index.js)

//db.js
从“/getData”导出*
我正在尝试存根getData.js以使e2e测试更加一致。这就是我所做的

//something.spec.js
//我写@src只是为了让这里的代码示例简短,它与我上面写的db.js是同一个文件
从'@src/db'导入*作为db
...
//这就是我试着做存根的方式
cy.stub(db,'getData')。解析(某物)
...

上面的存根不起作用。运行测试时,对外部服务的API调用仍在进行。文档本身让我推断我应该这样写,但它不起作用。

您可以在窗口上公开
db

//useSomething.js
从“react”导入{useState}
将*作为数据库从“./db”导入
const{getData}=db;
if(window.Cypress){//仅在测试时
window.db=db;
}
在测试中

cy.window().then(win=>{
cy.stub(win.db,'getData')。解析(某物);
})
或用于存根API调用