Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.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
Reactjs 在Cypress中使用redux thunks_Reactjs_Redux_Cypress_Redux Thunk - Fatal编程技术网

Reactjs 在Cypress中使用redux thunks

Reactjs 在Cypress中使用redux thunks,reactjs,redux,cypress,redux-thunk,Reactjs,Redux,Cypress,Redux Thunk,我有一个React应用程序,它是使用Create React app和Redux和Redux thunk构建的,我想用Cypress测试它。从Cypress分派thunk时(我在设置测试时会这样做),thunk中分派的操作不会传播到预期的存储区 为了强调我的意思,这里有一些代码。考虑一个简单的存储< /P> 从“redux”导入{applyMiddleware,compose,createStore}; 从“redux thunk”导入thunk; 从“uuid”导入{v4 as uuid};

我有一个React应用程序,它是使用
Create React app
Redux
Redux thunk
构建的,我想用
Cypress
测试它。从Cypress分派thunk时(我在设置测试时会这样做),thunk中分派的操作不会传播到预期的存储区

为了强调我的意思,这里有一些代码。考虑一个简单的存储< /P>
从“redux”导入{applyMiddleware,compose,createStore};
从“redux thunk”导入thunk;
从“uuid”导入{v4 as uuid};
从“/rootReducer”导入rootReducer;
常量中间件=[thunk];
const store=createStore(rootReducer,applyMiddleware(thunk));
导出{store};
if(window.Cypress){
window.testId=uuid();
window.store=商店;
}
还有一些砰砰声

constmythunk=()=>dispatch=>{
console.log(window.testId);
分派({type:“RANDOM_ACTION”});
}
如果在Cypress内部通过

cy.window().its(“store”).invoke(“dispatch”,myThunk());
记录的
testId
与在浏览器的开发控制台中运行
console.log(window.testId)
时不同

有人知道如何处理这种情况吗?
感谢您的建议

您想用Cypress编写什么样的测试?端到端测试不必了解底层实现的任何信息,当然也不必了解操作对象之类的细节。端到端测试用于设置测试,例如创建一些用户并在其中填充帖子。例如,在测试之前登录。我们在thunk中执行api调用,然后更新Redux状态,以表示用户已登录。尽管我意识到,真正需要的几个thunk(如登录)可以直接在window对象上公开。您可以使用api或UI来完成这一点。我们有一些自定义命令用于在测试之前准备一些UI状态,也有一些是用API编写的。testId将不同-
uuid()
是随机的,所以要明确的是,您所指的开发控制台是Cypress测试浏览器中的吗?您试图在Cypress中编写什么样的测试?端到端测试不必了解底层实现的任何信息,当然也不必了解操作对象之类的细节。端到端测试用于设置测试,例如创建一些用户并在其中填充帖子。例如,在测试之前登录。我们在thunk中执行api调用,然后更新Redux状态,以表示用户已登录。尽管我意识到,真正需要的几个thunk(如登录)可以直接在window对象上公开。您可以使用api或UI来完成这一点。我们有一些自定义命令,用于在测试之前准备一些UI状态,以及一些使用API编写的UI状态。testId将不同-
uuid()
是随机的,所以要清楚,您所指的开发控制台是Cypress测试浏览器中的吗?